Ticket #629: tahoe-backup-unicode-exclude-and-tests.dpatch

File tahoe-backup-unicode-exclude-and-tests.dpatch, 59.4 KB (added by davidsarah, at 2010-06-18T04:09:59Z)

Make 'tahoe backup --exclude' option accept Unicode (the other arguments were already fixed as part of #534/#565). Add tests, based partly on the existing #629 patch.

Line 
1Thu Jun 17 04:39:01 GMT Daylight Time 2010  david-sarah@jacaranda.org
2  * CLI: allow Unicode patterns in exclude option to 'tahoe backup'.
3
4Fri Jun 18 04:52:11 GMT Daylight Time 2010  david-sarah@jacaranda.org
5  * tahoe backup: unicode tests.
6
7New patches:
8
9[CLI: allow Unicode patterns in exclude option to 'tahoe backup'.
10david-sarah@jacaranda.org**20100617033901
11 Ignore-this: 9d971129e1c8bae3c1cc3220993d592e
12] {
13hunk ./src/allmydata/scripts/cli.py 298
14     def opt_exclude(self, pattern):
15         """Ignore files matching a glob pattern. You may give multiple
16         '--exclude' options."""
17-        g = pattern.strip()
18+        g = argv_to_unicode(pattern).strip()
19         if g:
20             exclude = self['exclude']
21             exclude.add(g)
22hunk ./src/allmydata/scripts/cli.py 305
23 
24     def opt_exclude_from(self, filepath):
25         """Ignore file matching glob patterns listed in file, one per
26-        line."""
27+        line. The file is assumed to be in the argv encoding."""
28         try:
29             exclude_file = file(filepath)
30         except:
31hunk ./src/allmydata/scripts/tahoe_backup.py 176
32             children = []
33 
34         for child in self.options.filter_listdir(children):
35+            assert isinstance(child, unicode), child
36             childpath = os.path.join(localpath, child)
37hunk ./src/allmydata/scripts/tahoe_backup.py 178
38-            child = unicode(child)
39             # note: symlinks to directories are both islink() and isdir()
40             if os.path.isdir(childpath) and not os.path.islink(childpath):
41                 metadata = get_local_metadata(childpath)
42}
43[tahoe backup: unicode tests.
44david-sarah@jacaranda.org**20100618035211
45 Ignore-this: 88ebab9f3218f083fdc635bff6599b60
46] {
47hunk ./src/allmydata/test/test_backupdb.py 7
48 from twisted.trial import unittest
49 
50 from allmydata.util import fileutil
51+from allmydata.util.stringutils import listdir_unicode
52 from allmydata.scripts import backupdb
53 
54 class BackupDB(unittest.TestCase):
55hunk ./src/allmydata/test/test_backupdb.py 83
56         fn = os.path.join(self.basedir, filename)
57         parentdir = os.path.dirname(fn)
58         fileutil.make_dirs(parentdir)
59-        f = open(fn, "w")
60-        f.write(data)
61-        f.close()
62+        fileutil.write(fn, data)
63         return fn
64 
65     def test_check(self):
66hunk ./src/allmydata/test/test_backupdb.py 230
67         r = bdb.check_directory(contents3)
68         self.failIf(r.was_created())
69 
70+    def test_unicode(self):
71+        self.basedir = basedir = os.path.join("backupdb", "unicode")
72+        fileutil.make_dirs(basedir)
73+        dbfile = os.path.join(basedir, "dbfile")
74+        bdb = self.create_or_skip(dbfile)
75+        self.failUnless(bdb)
76+
77+        self.writeto(u"f\u00f6\u00f6.txt", "foo.txt")
78+        files = [fn for fn in listdir_unicode(unicode(basedir)) if fn.endswith(".txt")]
79+        self.failUnlessEqual(len(files), 1)
80+        foo_fn = os.path.join(basedir, files[0])
81+        #print foo_fn, type(foo_fn)
82+
83+        r = bdb.check_file(foo_fn)
84+        self.failUnlessEqual(r.was_uploaded(), False)
85+        r.did_upload("foo-cap")
86+
87+        r = bdb.check_file(foo_fn)
88+        self.failUnlessEqual(r.was_uploaded(), "foo-cap")
89+        self.failUnlessEqual(r.should_check(), False)
90+
91+        bar_fn = self.writeto(u"b\u00e5r.txt", "bar.txt")
92+        #print bar_fn, type(bar_fn)
93+
94+        r = bdb.check_file(bar_fn)
95+        self.failUnlessEqual(r.was_uploaded(), False)
96+        r.did_upload("bar-cap")
97+
98+        r = bdb.check_file(bar_fn)
99+        self.failUnlessEqual(r.was_uploaded(), "bar-cap")
100+        self.failUnlessEqual(r.should_check(), False)
101+
102hunk ./src/allmydata/test/test_cli.py 1736
103     # and check4a takes 6s, as does the backup before check4b.
104     test_backup.timeout = 3000
105 
106+    def _check_filtering(self, filtered, all, included, excluded):
107+        filtered = set(filtered)
108+        all = set(all)
109+        included = set(included)
110+        excluded = set(excluded)
111+        self.failUnlessReallyEqual(filtered, included)
112+        self.failUnlessReallyEqual(all.difference(filtered), excluded)
113+
114     def test_exclude_options(self):
115hunk ./src/allmydata/test/test_cli.py 1745
116-        root_listdir = ('lib.a', '_darcs', 'subdir', 'nice_doc.lyx')
117-        subdir_listdir = ('another_doc.lyx', 'run_snake_run.py', 'CVS', '.svn', '_darcs')
118+        root_listdir = (u'lib.a', u'_darcs', u'subdir', u'nice_doc.lyx')
119+        subdir_listdir = (u'another_doc.lyx', u'run_snake_run.py', u'CVS', u'.svn', u'_darcs')
120         basedir = "cli/Backup/exclude_options"
121         fileutil.make_dirs(basedir)
122         nodeurl_path = os.path.join(basedir, 'node.url')
123hunk ./src/allmydata/test/test_cli.py 1752
124         fileutil.write(nodeurl_path, 'http://example.net:2357/')
125 
126-        def _check_filtering(filtered, all, included, excluded):
127-            filtered = set(filtered)
128-            all = set(all)
129-            included = set(included)
130-            excluded = set(excluded)
131-            self.failUnlessReallyEqual(filtered, included)
132-            self.failUnlessReallyEqual(all.difference(filtered), excluded)
133-
134         # test simple exclude
135         backup_options = cli.BackupOptions()
136         backup_options.parseOptions(['--exclude', '*lyx', '--node-directory',
137hunk ./src/allmydata/test/test_cli.py 1757
138                                      basedir, 'from', 'to'])
139         filtered = list(backup_options.filter_listdir(root_listdir))
140-        _check_filtering(filtered, root_listdir, ('lib.a', '_darcs', 'subdir'),
141-                         ('nice_doc.lyx',))
142+        self._check_filtering(filtered, root_listdir, (u'lib.a', u'_darcs', u'subdir'),
143+                              (u'nice_doc.lyx',))
144         # multiple exclude
145         backup_options = cli.BackupOptions()
146         backup_options.parseOptions(['--exclude', '*lyx', '--exclude', 'lib.?', '--node-directory',
147hunk ./src/allmydata/test/test_cli.py 1764
148                                      basedir, 'from', 'to'])
149         filtered = list(backup_options.filter_listdir(root_listdir))
150-        _check_filtering(filtered, root_listdir, ('_darcs', 'subdir'),
151-                         ('nice_doc.lyx', 'lib.a'))
152+        self._check_filtering(filtered, root_listdir, (u'_darcs', u'subdir'),
153+                              (u'nice_doc.lyx', u'lib.a'))
154         # vcs metadata exclusion
155         backup_options = cli.BackupOptions()
156         backup_options.parseOptions(['--exclude-vcs', '--node-directory',
157hunk ./src/allmydata/test/test_cli.py 1771
158                                      basedir, 'from', 'to'])
159         filtered = list(backup_options.filter_listdir(subdir_listdir))
160-        _check_filtering(filtered, subdir_listdir, ('another_doc.lyx', 'run_snake_run.py',),
161-                         ('CVS', '.svn', '_darcs'))
162+        self._check_filtering(filtered, subdir_listdir, (u'another_doc.lyx', u'run_snake_run.py',),
163+                              (u'CVS', u'.svn', u'_darcs'))
164         # read exclude patterns from file
165         exclusion_string = "_darcs\n*py\n.svn"
166         excl_filepath = os.path.join(basedir, 'exclusion')
167hunk ./src/allmydata/test/test_cli.py 1781
168         backup_options.parseOptions(['--exclude-from', excl_filepath, '--node-directory',
169                                      basedir, 'from', 'to'])
170         filtered = list(backup_options.filter_listdir(subdir_listdir))
171-        _check_filtering(filtered, subdir_listdir, ('another_doc.lyx', 'CVS'),
172-                         ('.svn', '_darcs', 'run_snake_run.py'))
173-        # text BackupConfigurationError
174+        self._check_filtering(filtered, subdir_listdir, (u'another_doc.lyx', u'CVS'),
175+                              (u'.svn', u'_darcs', u'run_snake_run.py'))
176+        # test BackupConfigurationError
177         self.failUnlessRaises(cli.BackupConfigurationError,
178                               backup_options.parseOptions,
179                               ['--exclude-from', excl_filepath + '.no', '--node-directory',
180hunk ./src/allmydata/test/test_cli.py 1794
181         backup_options.parseOptions(['--exclude', '*lyx', '--node-directory',
182                                      basedir, 'from', 'to'])
183         filtered = list(backup_options.filter_listdir(iter(root_listdir)))
184-        _check_filtering(filtered, root_listdir, ('lib.a', '_darcs', 'subdir'),
185-                         ('nice_doc.lyx',))
186+        self._check_filtering(filtered, root_listdir, (u'lib.a', u'_darcs', u'subdir'),
187+                              (u'nice_doc.lyx',))
188+
189+    def test_exclude_options_unicode(self):
190+        nice_doc = u"nice_d\u00F8c.lyx"
191+        try:
192+            doc_pattern_arg = u"*d\u00F8c*".encode(get_argv_encoding())
193+        except UnicodeEncodeError:
194+            raise unittest.SkipTest("A non-ASCII command argument could not be encoded on this platform.")
195+
196+        root_listdir = (u'lib.a', u'_darcs', u'subdir', nice_doc)
197+        basedir = "cli/Backup/exclude_options_unicode"
198+        fileutil.make_dirs(basedir)
199+        nodeurl_path = os.path.join(basedir, 'node.url')
200+        fileutil.write(nodeurl_path, 'http://example.net:2357/')
201+
202+        # test simple exclude
203+        backup_options = cli.BackupOptions()
204+        backup_options.parseOptions(['--exclude', doc_pattern_arg, '--node-directory',
205+                                     basedir, 'from', 'to'])
206+        filtered = list(backup_options.filter_listdir(root_listdir))
207+        self._check_filtering(filtered, root_listdir, (u'lib.a', u'_darcs', u'subdir'),
208+                              (nice_doc,))
209+        # multiple exclude
210+        backup_options = cli.BackupOptions()
211+        backup_options.parseOptions(['--exclude', doc_pattern_arg, '--exclude', 'lib.?', '--node-directory',
212+                                     basedir, 'from', 'to'])
213+        filtered = list(backup_options.filter_listdir(root_listdir))
214+        self._check_filtering(filtered, root_listdir, (u'_darcs', u'subdir'),
215+                             (nice_doc, u'lib.a'))
216+        # read exclude patterns from file
217+        exclusion_string = doc_pattern_arg + "\nlib.?"
218+        excl_filepath = os.path.join(basedir, 'exclusion')
219+        fileutil.write(excl_filepath, exclusion_string)
220+        backup_options = cli.BackupOptions()
221+        backup_options.parseOptions(['--exclude-from', excl_filepath, '--node-directory',
222+                                     basedir, 'from', 'to'])
223+        filtered = list(backup_options.filter_listdir(root_listdir))
224+        self._check_filtering(filtered, root_listdir, (u'_darcs', u'subdir'),
225+                             (nice_doc, u'lib.a'))
226+
227+        # test that an iterator works too
228+        backup_options = cli.BackupOptions()
229+        backup_options.parseOptions(['--exclude', doc_pattern_arg, '--node-directory',
230+                                     basedir, 'from', 'to'])
231+        filtered = list(backup_options.filter_listdir(iter(root_listdir)))
232+        self._check_filtering(filtered, root_listdir, (u'lib.a', u'_darcs', u'subdir'),
233+                              (nice_doc,))
234 
235     def test_ignore_symlinks(self):
236         if not hasattr(os, 'symlink'):
237}
238
239Context:
240
241[running.html: fix overeager replacement of 'tahoe' with 'Tahoe-LAFS', and some simplifications.
242david-sarah@jacaranda.org**20100617000952
243 Ignore-this: 472b4b531c866574ed79f076b58495b5
244] 
245[Add a specification for servers of happiness.
246Kevan Carstensen <kevan@isnotajoke.com>**20100524003508
247 Ignore-this: 982e2be8a411be5beaf3582bdfde6151
248] 
249[Note that servers of happiness only applies to immutable files for the moment
250Kevan Carstensen <kevan@isnotajoke.com>**20100524042836
251 Ignore-this: cf83cac7a2b3ed347ae278c1a7d9a176
252] 
253[Add a note about running Tahoe-LAFS on a small grid to running.html
254zooko@zooko.com**20100616140227
255 Ignore-this: 14dfbff0d47144f7c2375108c6055dc2
256 also Change "tahoe" and "Tahoe" to "Tahoe-LAFS" in running.html
257 author: Kevan Carstensen
258] 
259[CLI.txt: introduce 'create-alias' before 'add-alias', document Unicode argument support, and other minor updates.
260david-sarah@jacaranda.org**20100610225547
261 Ignore-this: de7326e98d79291cdc15aed86ae61fe8
262] 
263[test_system.py: investigate failure in allmydata.test.test_system.SystemTest.test_upload_and_download_random_key due to bytes_sent not being an int
264david-sarah@jacaranda.org**20100616001648
265 Ignore-this: 9c78092ab7bfdc909acae3a144ddd1f8
266] 
267[SFTP: remove a dubious use of 'pragma: no cover'.
268david-sarah@jacaranda.org**20100613164356
269 Ignore-this: 8f96a81b1196017ed6cfa1d914e56fa5
270] 
271[SFTP: test that renaming onto a just-opened file fails.
272david-sarah@jacaranda.org**20100612033709
273 Ignore-this: 9b14147ad78b16a5ab0e0e4813491414
274] 
275[SFTP: further small improvements to test coverage. Also ensure that after a test failure, later tests don't fail spuriously due to the checks for heisenfile leaks.
276david-sarah@jacaranda.org**20100612030737
277 Ignore-this: 4ec1dd3d7542be42007987a2f51508e7
278] 
279[SFTP: further improve test coverage (paths containing '.', bad data for posix-rename extension, and error in test of openShell).
280david-sarah@jacaranda.org**20100611213142
281 Ignore-this: 956f9df7f9e8a66b506ca58dd9a5dbe7
282] 
283[SFTP: improve test coverage for no-write on mutable files, and check for heisenfile table leaks in all relevant tests. Delete test_memory_leak since it is now redundant.
284david-sarah@jacaranda.org**20100611205752
285 Ignore-this: 88be1cf323c10dd534a4b8fdac121e31
286] 
287[SFTP: add test for extension of file opened with FXF_APPEND.
288david-sarah@jacaranda.org**20100610182647
289 Ignore-this: c0216d26453ce3cb4b92eef37d218fb4
290] 
291[NEWS: add UTF-8 coding declaration.
292david-sarah@jacaranda.org**20100609234851
293 Ignore-this: 3e6ef125b278e0a982c88d23180a78ae
294] 
295[tests: bump up the timeout on this iputil test from 2s to 4s
296zooko@zooko.com**20100609143017
297 Ignore-this: 786b7f7bbc85d45cdf727a6293750798
298] 
299[docs: a few tweaks to NEWS and CREDITS and make quickstart.html point to 1.7.0β!
300zooko@zooko.com**20100609142927
301 Ignore-this: f8097d3062f41f06c4420a7c84a56481
302] 
303[docs: Update NEWS file with new features and bugfixes in 1.7.0
304francois@ctrlaltdel.ch**20100609091120
305 Ignore-this: 8c1014e4469ef530e5ff48d7d6ae71c5
306] 
307[docs: wording fix, thanks to Jeremy Visser, fix #987
308francois@ctrlaltdel.ch**20100609081103
309 Ignore-this: 6d2e627e0f1cd58c0e1394e193287a4b
310] 
311[SFTP: fix most significant memory leak described in #1045 (due to a file being added to all_heisenfiles under more than one direntry when renamed).
312david-sarah@jacaranda.org**20100609080003
313 Ignore-this: 490b4c14207f6725d0dd32c395fbcefa
314] 
315[test_stringutils.py: Fix test failure on CentOS builder, possibly Python 2.4.3-related.
316david-sarah@jacaranda.org**20100609065056
317 Ignore-this: 503b561b213baf1b92ae641f2fdf080a
318] 
319[docs: update relnote.txt for Tahoe-LAFS v1.7.0β
320zooko@zooko.com**20100609054602
321 Ignore-this: 52e1bf86a91d45315960fb8806b7a479
322] 
323[setup: move the mock library from install_requires to tests_require (re: #1016)
324zooko@zooko.com**20100609050542
325 Ignore-this: c51a4ff3e19ed630755be752d2233db4
326] 
327[setup: show-tool-versions.py: print out the output from the unix command "locale" and re-arrange encoding data a little bit
328zooko@zooko.com**20100609040714
329 Ignore-this: 69382719b462d13ff940fcd980776004
330] 
331[setup: add zope.interface to the packages described by show-tool-versions.py
332zooko@zooko.com**20100609034915
333 Ignore-this: b5262b2af5c953a5f68a60bd48dcaa75
334] 
335[Fix for Unicode-related test failures on Zooko's OS X 10.6 machine.
336david-sarah@jacaranda.org**20100609055448
337 Ignore-this: 395ad16429e56623edfa74457a121190
338] 
339[stringutils.py, sftpd.py: Portability fixes for Python <= 2.5.
340david-sarah@jacaranda.org**20100609013302
341 Ignore-this: 9d9ce476ee1b96796e0f48cc5338f852
342] 
343[_auto_deps.py: allow Python 2.4.3 on Redhat-based distributions.
344david-sarah@jacaranda.org**20100609003646
345 Ignore-this: ad3cafdff200caf963024873d0ebff3c
346] 
347[CREDITS: update François's Description
348zooko@zooko.com**20100608155513
349 Ignore-this: a266b438d25ca2cb28eafff75aa4b2a
350] 
351[CREDITS: jsgf
352zooko@zooko.com**20100608143052
353 Ignore-this: 10abe06d40b88e22a9107d30f1b84810
354] 
355[setup: rename the setuptools_trial .egg that comes bundled in the base dir to not have "-py2.6" in its name, since it works with other versions of python as well
356zooko@zooko.com**20100608041607
357 Ignore-this: 64fe386d2e5fba0ab441116e74dad5a3
358] 
359[setup: rename the darcsver .egg that comes bundled in the base dir to not have "-py2.6" in its name, since it works with other versions of python as well
360zooko@zooko.com**20100608041534
361 Ignore-this: 53f925f160256409cf01b76d2583f83f
362] 
363[Back out Windows-specific Unicode argument support for v1.7.
364david-sarah@jacaranda.org**20100609000803
365 Ignore-this: b230ffe6fdaf9a0d85dfe745b37b42fb
366] 
367[SFTP: suppress NoSuchChildError if heisenfile attributes have been updated in setAttrs, in the case where the parent is available.
368david-sarah@jacaranda.org**20100608063753
369 Ignore-this: 8c72a5a9c15934f8fe4594ba3ee50ddd
370] 
371[SFTP: ignore permissions when opening a file (needed for sshfs interoperability).
372david-sarah@jacaranda.org**20100608055700
373 Ignore-this: f87f6a430f629326a324ddd94426c797
374] 
375[tests: bump up the timeout on these tests; MM's buildslave is sometimes extremely slow on tests, but it will complete them if given enough time. MM is working on making that buildslave more predictable in how long it takes to run tests.
376zooko@zooko.com**20100608033754
377 Ignore-this: 98dc27692c5ace1e4b0650b6680629d7
378] 
379[test_web.py: fix pyflakes warnings introduced by byterange patch.
380david-sarah@jacaranda.org**20100608042012
381 Ignore-this: a7612724893b51d1154dec4372e0508
382] 
383[Improve HTTP/1.1 byterange handling
384Jeremy Fitzhardinge <jeremy@goop.org>**20100310025913
385 Ignore-this: 6d69e694973d618f0dc65983735cd9be
386 
387 Fix parsing of a Range: header to support:
388  - multiple ranges (parsed, but not returned)
389  - suffix byte ranges ("-2139")
390  - correct handling of incorrectly formatted range headers
391    (correct behaviour is to ignore the header and return the full
392     file)
393  - return appropriate error for ranges outside the file
394 
395 Multiple ranges are parsed, but only the first range is returned.
396 Returning multiple ranges requires using the multipart/byterange
397 content type.
398 
399] 
400[test_cli.py: remove invalid 'test_listdir_unicode_bad' test.
401david-sarah@jacaranda.org**20100607183730
402 Ignore-this: fadfe87980dc1862f349bfcc21b2145f
403] 
404[check_memory.py: adapt to servers-of-happiness changes.
405david-sarah@jacaranda.org**20100608013528
406 Ignore-this: c6b28411c543d1aea2f148a955f7998
407] 
408[show-tool-versions.py: platform.linux_distribution() is not always available
409david-sarah@jacaranda.org**20100608004523
410 Ignore-this: 793fb4050086723af05d06bed8b1b92a
411] 
412[show-tool-versions.py: show platform.linux_distribution()
413david-sarah@jacaranda.org**20100608003829
414 Ignore-this: 81cb5e5fc6324044f0fc6d82903c8223
415] 
416[Remove the 'tahoe debug consolidate' subcommand.
417david-sarah@jacaranda.org**20100607183757
418 Ignore-this: 4b14daa3ae557cea07d6e119d25dafe9
419] 
420[tests: drastically increase timeout of this very time-consuming test in honor of François's ARM box
421zooko@zooko.com**20100607115929
422 Ignore-this: bf1bb52ffb6b5ccae71d4dde14621bc8
423] 
424[setup: update authorship, datestamp, licensing, and add special exceptions to allow combination with Eclipse- and QPL- licensed code
425zooko@zooko.com**20100607062329
426 Ignore-this: 5a1d7b12dfafd61283ea65a245416381
427] 
428[common_http.py, tahoe_cp.py: Fix an error in calling the superclass constructor in HTTPError and MissingSourceError (introduced by the Unicode fixes).
429david-sarah@jacaranda.org**20100607174714
430 Ignore-this: 1a118d593d81c918a4717c887f033aec
431] 
432[FTP-and-SFTP.txt: minor technical correction to doc for 'no-write' flag.
433david-sarah@jacaranda.org**20100607061600
434 Ignore-this: 66aee0c1b6c00538602d08631225e114
435] 
436[test_stringutils.py: trivial error in exception message for skipped test.
437david-sarah@jacaranda.org**20100607061455
438 Ignore-this: f261a5d4e2b8fe3bcc37e02539ba1ae2
439] 
440[setup: organize misc/ scripts and tools and remove obsolete ones
441zooko@zooko.com**20100607051618
442 Ignore-this: 161db1158c6b7be8365b0b3dee2e0b28
443 This is for ticket #1068.
444] 
445[More Unicode test fixes.
446david-sarah@jacaranda.org**20100607053358
447 Ignore-this: 6a271fb77c31f28cb7bdba63b26a2dd2
448] 
449[Unicode fixes for platforms with non-native-Unicode filesystems.
450david-sarah@jacaranda.org**20100607043238
451 Ignore-this: 2134dc1793c4f8e50350bd749c4c98c2
452] 
453[Unicode fixes.
454david-sarah@jacaranda.org**20100607010215
455 Ignore-this: d58727b5cd2ce00e6b6dae3166030138
456] 
457[quickstart.html: link to snapshots page, sorted with most recent first.
458david-sarah@jacaranda.org**20100606221127
459 Ignore-this: 93ea7e6ee47acc66f6daac9cabffed2d
460] 
461[setup: loosen the Desert Island test to allow it to check the network for new packages as long as it doesn't actually download any
462zooko@zooko.com**20100606175717
463 Ignore-this: e438a8eb3c1b0e68080711ec6ff93ffa
464 (You can look but don't touch.)
465] 
466[setup: have the buildbots print out locale.getpreferredencoding(), locale.getdefaultlocale(), locale.getlocale(), and os.path.supports_unicode_filenames
467zooko@zooko.com**20100605162932
468 Ignore-this: 85e31e0e0e1364e9215420e272d58116
469 Even though that latter one is completely useless, I'm curious.
470] 
471[quickstart.html: We haven't released 1.7beta yet.
472david-sarah@jacaranda.org**20100606220301
473 Ignore-this: 4e18898cfdb08cc3ddd1ff94d43fdda7
474] 
475[Raise Python version requirement to 2.4.4 for non-UCS-2 builds, to avoid a critical Python security bug.
476david-sarah@jacaranda.org**20100605031713
477 Ignore-this: 2df2b6d620c5d8191c79eefe655059e2
478] 
479[unicode tests: fix missing import
480zooko@zooko.com**20100604142630
481 Ignore-this: db437fe8009971882aaea9de05e2bc3
482] 
483[unicode: make test_cli test a non-ascii argument, and make the fallback term encoding be locale.getpreferredencoding()
484zooko@zooko.com**20100604141251
485 Ignore-this: b2bfc07942f69141811e59891842bd8c
486] 
487[unicode: always decode json manifest as utf-8 then encode for stdout
488zooko@zooko.com**20100604084840
489 Ignore-this: ac481692315fae870a0f3562bd7db48e
490 pyflakes pointed out that the exception handler fallback called an un-imported function, showing that the fallback wasn't being exercised.
491 I'm not 100% sure that this patch is right and would appreciate François or someone reviewing it.
492] 
493[fix flakes
494zooko@zooko.com**20100604075845
495 Ignore-this: 3e6a84b78771b0ad519e771a13605f0
496] 
497[fix syntax of assertion handling that isn't portable to older versions of Python
498zooko@zooko.com**20100604075805
499 Ignore-this: 3a12b293aad25883fb17230266eb04ec
500] 
501[test_stringutils.py: Skip test test_listdir_unicode_good if filesystem supports only ASCII filenames
502Francois Deppierraz <francois@ctrlaltdel.ch>**20100521160839
503 Ignore-this: f2ccdbd04c8d9f42f1efb0eb80018257
504] 
505[test_stringutils.py: Skip test_listdir_unicode on mocked platform which cannot store non-ASCII filenames
506Francois Deppierraz <francois@ctrlaltdel.ch>**20100521160559
507 Ignore-this: b93fde736a8904712b506e799250a600
508] 
509[test_stringutils.py: Add a test class for OpenBSD 4.1 with LANG=C
510Francois Deppierraz <francois@ctrlaltdel.ch>**20100521140053
511 Ignore-this: 63f568aec259cef0e807752fc8150b73
512] 
513[test_stringutils.py: Mock the open() call in test_open_unicode
514Francois Deppierraz <francois@ctrlaltdel.ch>**20100521135817
515 Ignore-this: d8be4e56a6eefe7d60f97f01ea20ac67
516 
517 This test ensure that open(a_unicode_string) is used on Unicode platforms
518 (Windows or MacOS X) and that open(a_correctly_encoded_bytestring) on other
519 platforms such as Unix.
520 
521] 
522[test_stringutils.py: Fix a trivial Python 2.4 syntax incompatibility
523Francois Deppierraz <francois@ctrlaltdel.ch>**20100521093345
524 Ignore-this: 9297e3d14a0dd37d0c1a4c6954fd59d3
525] 
526[test_cli.py: Fix tests when sys.stdout.encoding=None and refactor this code into functions
527Francois Deppierraz <francois@ctrlaltdel.ch>**20100520084447
528 Ignore-this: cf2286e225aaa4d7b1927c78c901477f
529] 
530[Fix handling of correctly encoded unicode filenames (#534)
531Francois Deppierraz <francois@ctrlaltdel.ch>**20100520004356
532 Ignore-this: 8a3a7df214a855f5a12dc0eeab6f2e39
533 
534 Tahoe CLI commands working on local files, for instance 'tahoe cp' or 'tahoe
535 backup', have been improved to correctly handle filenames containing non-ASCII
536 characters.
537   
538 In the case where Tahoe encounters a filename which cannot be decoded using the
539 system encoding, an error will be returned and the operation will fail.  Under
540 Linux, this typically happens when the filesystem contains filenames encoded
541 with another encoding, for instance latin1, than the system locale, for
542 instance UTF-8.  In such case, you'll need to fix your system with tools such
543 as 'convmv' before using Tahoe CLI.
544   
545 All CLI commands have been improved to support non-ASCII parameters such as
546 filenames and aliases on all supported Operating Systems except Windows as of
547 now.
548] 
549[stringutils.py: Unicode helper functions + associated tests
550Francois Deppierraz <francois@ctrlaltdel.ch>**20100520004105
551 Ignore-this: 7a73fc31de2fd39d437d6abd278bfa9a
552 
553 This file contains a bunch of helper functions which converts
554 unicode string from and to argv, filenames and stdout.
555] 
556[Add dependency on Michael Foord's mock library
557Francois Deppierraz <francois@ctrlaltdel.ch>**20100519233325
558 Ignore-this: 9bb01bf1e4780f6b98ed394c3b772a80
559] 
560[setup: adjust make clean target to ignore our bundled build tools
561zooko@zooko.com**20100604051250
562 Ignore-this: d24d2a3b849000790cfbfab69237454e
563] 
564[setup: bundle a copy of setuptools_trial as an unzipped egg in the base dir of the Tahoe-LAFS source tree
565zooko@zooko.com**20100604044648
566 Ignore-this: a4736e9812b4dab2d5a2bc4bfc5c3b28
567 This is to work-around this Distribute issue:
568 http://bitbucket.org/tarek/distribute/issue/55/revision-control-plugin-automatically-installed-as-a-build-dependency-is-not-present-when-another-build-dependency-is-being
569] 
570[setup: bundle a copy of darcsver in unzipped egg form in the root of the Tahoe-LAFS source tree
571zooko@zooko.com**20100604044146
572 Ignore-this: a51a52e82dd3a39225657ffa27decae2
573 This is to work-around this Distribute issue:
574 http://bitbucket.org/tarek/distribute/issue/55/revision-control-plugin-automatically-installed-as-a-build-dependency-is-not-present-when-another-build-dependency-is-being
575] 
576[setup: undo the previous patch to quote the executable in scripts
577zooko@zooko.com**20100604025204
578 Ignore-this: beda3b951c49d1111478618b8cabe005
579 The problem isn't in the script, it is in the cli.exe script that is built by setuptools. This might be related to
580 http://bugs.python.org/issue6792
581 and
582 http://bugs.python.org/setuptools/issue2
583 Or it might be a separate issue involving the launcher.c code e.g. http://tahoe-lafs.org/trac/zetuptoolz/browser/launcher.c?rev=576#L210 and its handling of the interpreter name.
584] 
585[quickstart.html: warn against installing Python at a path containing spaces.
586david-sarah@jacaranda.org**20100604032413
587 Ignore-this: c7118332573abd7762d9a897e650bc6a
588] 
589[setup: put quotes around the path to executable in case it has spaces in it, when building a tahoe.exe for win32
590zooko@zooko.com**20100604020836
591 Ignore-this: 478684843169c94a9c14726fedeeed7d
592] 
593[misc/show-tool-versions.py: Display additional Python interpreter encoding informations (stdout, stdin and filesystem)
594Francois Deppierraz <francois@ctrlaltdel.ch>**20100521094313
595 Ignore-this: 3ae9b0b07fd1d53fb632ef169f7c5d26
596] 
597[Fix test failures in test_web caused by changes to web page titles in #1062. Also, change a 'target' field to '_blank' instead of 'blank' in welcome.xhtml.
598david-sarah@jacaranda.org**20100603232105
599 Ignore-this: 6e2cc63f42b07e2a3b2d1a857abc50a6
600] 
601[Resolve merge conflict for sftpd.py
602david-sarah@jacaranda.org**20100603182537
603 Ignore-this: ba8b543e51312ac949798eb8f5bd9d9c
604] 
605[SFTP: possible fix for metadata times being shown as the epoch.
606david-sarah@jacaranda.org**20100602234514
607 Ignore-this: bdd7dfccf34eff818ff88aa4f3d28790
608] 
609[SFTP: further improvements to test coverage.
610david-sarah@jacaranda.org**20100602234422
611 Ignore-this: 87eeee567e8d7562659442ea491e187c
612] 
613[SFTP: improve test coverage. Also make creating a directory fail when permissions are read-only (rather than ignoring the permissions).
614david-sarah@jacaranda.org**20100602041934
615 Ignore-this: a5e9d9081677bc7f3ddb18ca7a1f531f
616] 
617[dirnode.py: fix a bug in the no-write change for Adder, and improve test coverage. Add a 'metadata' argument to create_subdirectory, with documentation. Also update some comments in test_dirnode.py made stale by the ctime/mtime change.
618david-sarah@jacaranda.org**20100602032641
619 Ignore-this: 48817b54cd63f5422cb88214c053b03b
620] 
621[dirnode.py: Fix bug that caused 'tahoe' fields, 'ctime' and 'mtime' not to be updated when new metadata is present.
622david-sarah@jacaranda.org**20100602014644
623 Ignore-this: 5bac95aa897b68f2785d481e49b6a66
624] 
625[SFTP: fix a bug that caused the temporary files underlying EncryptedTemporaryFiles not to be closed.
626david-sarah@jacaranda.org**20100601055310
627 Ignore-this: 44fee4cfe222b2b1690f4c5e75083a52
628] 
629[SFTP: changes for #1063 ('no-write' field) including comment:1 (clearing owner write permission diminishes to a read cap). Includes documentation changes, but not tests for the new behaviour.
630david-sarah@jacaranda.org**20100601051139
631 Ignore-this: eff7c08bd47fd52bfe2b844dabf02558
632] 
633[dirnode.py: Fix #1034 (MetadataSetter does not enforce restriction on setting 'tahoe' subkeys), and expose the metadata updater for use by SFTP. Also, support diminishing a child cap to read-only if 'no-write' is set in the metadata.
634david-sarah@jacaranda.org**20100601045428
635 Ignore-this: 14f26e17e58db97fad0dcfd350b38e95
636] 
637[SFTP: the same bug as in _sync_heisenfiles also occurred in two other places.
638david-sarah@jacaranda.org**20100530060127
639 Ignore-this: 8d137658fc6e4596fa42697476c39aa3
640] 
641[SFTP: another try at fixing the _sync_heisenfiles bug.
642david-sarah@jacaranda.org**20100530055254
643 Ignore-this: c15f76f32a60083a6b7de6ca0e917934
644] 
645[SFTP: fix silly bug in _sync_heisenfiles ('f is not ignore' vs 'not (f is ignore)').
646david-sarah@jacaranda.org**20100530053807
647 Ignore-this: 71c4bc62613bf8fef835886d8eb61c27
648] 
649[SFTP: log when a sync completes.
650david-sarah@jacaranda.org**20100530051840
651 Ignore-this: d99765663ceb673c8a693dfcf88c25ea
652] 
653[SFTP: fix bug in previous logging patch.
654david-sarah@jacaranda.org**20100530050000
655 Ignore-this: 613e4c115f03fe2d04c621b510340817
656] 
657[SFTP: more logging to track down OpenOffice hang.
658david-sarah@jacaranda.org**20100530040809
659 Ignore-this: 6c11f2d1eac9f62e2d0f04f006476a03
660] 
661[SFTP: avoid blocking close on a heisenfile that has been abandoned or never changed. Also, improve the logging to help track down a case where OpenOffice hangs on opening a file with FXF_READ|FXF_WRITE.
662david-sarah@jacaranda.org**20100530025544
663 Ignore-this: 9919dddd446fff64de4031ad51490d1c
664] 
665[Move suppression of DeprecationWarning about BaseException.message from sftpd.py to main __init__.py. Also, remove the global suppression of the 'integer argument expected, got float' warning, which turned out to be a bug.
666david-sarah@jacaranda.org**20100529050537
667 Ignore-this: 87648afa0dec0d2e73614007de102a16
668] 
669[SFTP: cater to clients that assume a file is created as soon as they have made an open request; also, fix some race conditions associated with closing a file at about the same time as renaming or removing it.
670david-sarah@jacaranda.org**20100529045253
671 Ignore-this: 2404076b2154ff2659e2b10e0b9e813c
672] 
673[Change doc comments in interfaces.py to take into account unknown nodes.
674david-sarah@jacaranda.org**20100528171922
675 Ignore-this: d2fde6890b3bca9c7275775f64fbff56
676] 
677[Add must_exist, must_be_directory, and must_be_file arguments to DirectoryNode.delete. This will be used to fixes a minor condition in the SFTP frontend.
678david-sarah@jacaranda.org**20100527194529
679 Ignore-this: 6d8114cef4450c52c57639f82852716f
680] 
681[Trivial whitespace changes.
682david-sarah@jacaranda.org**20100527194114
683 Ignore-this: 98d611bc54ee20b01a5f6b334ff61b2d
684] 
685[SFTP: 'sync' any open files at a direntry before opening any new file at that direntry. This works around the sshfs misbehaviour of returning success to clients immediately on close.
686david-sarah@jacaranda.org**20100525230257
687 Ignore-this: 63245d6d864f8f591c86170864d7c57f
688] 
689[SFTP: handle removing a file while it is open. Also some simplifications of the logout handling.
690david-sarah@jacaranda.org**20100525184210
691 Ignore-this: 660ee80be6ecab783c60452a9da896de
692] 
693[SFTP: a posix-rename response should actually return an FXP_STATUS reply, not an FXP_EXTENDED_REPLY as Twisted Conch assumes. Work around this by raising an SFTPError with code FX_OK.
694david-sarah@jacaranda.org**20100525033323
695 Ignore-this: fe2914d3ef7f5194bbeaf3f2dda2ad7d
696] 
697[SFTP: fix problem with posix-rename code returning a Deferred for the renamed filenode, not for the result of the request (an empty string).
698david-sarah@jacaranda.org**20100525020209
699 Ignore-this: 69f7491df2a8f7ea92d999a6d9f0581d
700] 
701[SFTP: fix time handling to make sure floats are not passed into twisted.conch, and to print times in the future less ambiguously in directory listings.
702david-sarah@jacaranda.org**20100524230412
703 Ignore-this: eb1a3fb72492fa2fb19667b6e4300440
704] 
705[SFTP: name of the POSIX rename extension should be 'posix-rename@openssh.com', not 'extposix-rename@openssh.com'.
706david-sarah@jacaranda.org**20100524021156
707 Ignore-this: f90eb1ff9560176635386ee797a3fdc7
708] 
709[SFTP: avoid race condition where .write could be called on an OverwriteableFileConsumer after it had been closed.
710david-sarah@jacaranda.org**20100523233830
711 Ignore-this: 55d381064a15bd64381163341df4d09f
712] 
713[SFTP: log tracebacks for RAISEd exceptions.
714david-sarah@jacaranda.org**20100523221535
715 Ignore-this: c76a7852df099b358642f0631237cc89
716] 
717[Suppress 'integer argument expected, got float' DeprecationWarning everywhere
718david-sarah@jacaranda.org**20100523221157
719 Ignore-this: 80efd7e27798f5d2ad66c7a53e7048e5
720] 
721[SFTP: more logging to investigate behaviour of getAttrs(path).
722david-sarah@jacaranda.org**20100523204236
723 Ignore-this: e58fd35dc9015316e16a9f49f19bb469
724] 
725[SFTP: fix pyflakes warnings; drop 'noisy' versions of eventually_callback and eventually_errback; robustify conversion of exception messages to UTF-8.
726david-sarah@jacaranda.org**20100523140905
727 Ignore-this: 420196fc58646b05bbc9c3732b6eb314
728] 
729[SFTP: fixes and test cases for renaming of open files.
730david-sarah@jacaranda.org**20100523032549
731 Ignore-this: 32e0726be0fc89335f3035157e202c68
732] 
733[SFTP: Increase test_sftp timeout to cater for francois' ARM buildslave.
734david-sarah@jacaranda.org**20100522191639
735 Ignore-this: a5acf9660d304677048ab4dd72908ad8
736] 
737[SFTP: Fix error in support for getAttrs on an open file, to index open files by directory entry rather than path. Extend that support to renaming open files. Also, implement the extposix-rename@openssh.org extension, and some other minor refactoring.
738david-sarah@jacaranda.org**20100522035836
739 Ignore-this: 8ef93a828e927cce2c23b805250b81a4
740] 
741[SFTP: relax pyasn1 version dependency to >= 0.0.8a.
742david-sarah@jacaranda.org**20100520181437
743 Ignore-this: 2c7b3dee7b7e14ba121d3118193a386a
744] 
745[SFTP tests: fix test_openDirectory_and_attrs that was failing in timezones west of UTC.
746david-sarah@jacaranda.org**20100520181027
747 Ignore-this: 9beaf602beef437c11c7e97f54ce2599
748] 
749[SFTP: allow getAttrs to succeed on a file that has been opened for creation but not yet uploaded or linked (part of #1050).
750david-sarah@jacaranda.org**20100520035613
751 Ignore-this: 2f59107d60d5476edac19361ccf6cf94
752] 
753[SFTP: improve logging so that results of requests are (usually) logged.
754david-sarah@jacaranda.org**20100520003652
755 Ignore-this: 3f59eeee374a3eba71db9be31d5a95
756] 
757[SFTP: add tests for more combinations of open flags.
758david-sarah@jacaranda.org**20100519053933
759 Ignore-this: b97ee351b1e8ecfecabac70698060665
760] 
761[SFTP: allow FXF_WRITE | FXF_TRUNC (#1050).
762david-sarah@jacaranda.org**20100519043240
763 Ignore-this: bd70009f11d07ac6e9fd0d1e3fa87a9b
764] 
765[SFTP: remove another case where we were logging data.
766david-sarah@jacaranda.org**20100519012713
767 Ignore-this: 83115daf3a90278fed0e3fc267607584
768] 
769[SFTP: avoid logging all data passed to callbacks.
770david-sarah@jacaranda.org**20100519000651
771 Ignore-this: ade6d69a473ada50acef6389fc7fdf69
772] 
773[SFTP: fixes related to reporting of permissions (needed for sshfs).
774david-sarah@jacaranda.org**20100518054521
775 Ignore-this: c51f8a5d0dc76b80d33ffef9b0541325
776] 
777[SFTP: change error code returned for ExistingChildError to FX_FAILURE (fixes gvfs with some picky programs such as gedit).
778david-sarah@jacaranda.org**20100518004205
779 Ignore-this: c194c2c9aaf3edba7af84b7413cec375
780] 
781[SFTP: fixed bugs that caused hangs during write (#1037).
782david-sarah@jacaranda.org**20100517044228
783 Ignore-this: b8b95e82c4057367388a1e6baada993b
784] 
785[SFTP: work around a probable bug in twisted.conch.ssh.session:loseConnection(). Also some minor error handling cleanups.
786david-sarah@jacaranda.org**20100517012606
787 Ignore-this: 5d3da7c4219cb0c14547e7fd70c74204
788] 
789[SFTP: add pyasn1 as dependency, needed if we are using Twisted >= 9.0.0.
790david-sarah@jacaranda.org**20100516193710
791 Ignore-this: 76fd92e8a950bb1983a90a09e89c54d3
792] 
793[SFTP: Support statvfs extensions, avoid logging actual data, and decline shell sessions politely.
794david-sarah@jacaranda.org**20100516154347
795 Ignore-this: 9d05d23ba77693c03a61accd348ccbe5
796] 
797[SFTP: fix error in SFTPUserHandler arguments introduced by execCommand patch.
798david-sarah@jacaranda.org**20100516014045
799 Ignore-this: f5ee494dc6ad6aa536cc8144bd2e3d19
800] 
801[SFTP: implement execCommand to interoperate with clients that issue a 'df -P -k /' command. Also eliminate use of Zope adaptation.
802david-sarah@jacaranda.org**20100516012754
803 Ignore-this: 2d0ed28b759f67f83875b1eaf5778992
804] 
805[sftpd.py: 'log.OPERATIONAL' should be just 'OPERATIONAL'.
806david-sarah@jacaranda.org**20100515155533
807 Ignore-this: f2347cb3301bbccc086356f6edc685
808] 
809[Attempt to fix #1040 by making SFTPUser implement ISession.
810david-sarah@jacaranda.org**20100515005719
811 Ignore-this: b3baaf088ba567e861e61e347195dfc4
812] 
813[Eliminate Windows newlines from sftpd.py.
814david-sarah@jacaranda.org**20100515005656
815 Ignore-this: cd54fd25beb957887514ae76e08c277
816] 
817[Update SFTP implementation and tests: fix #1038 and switch to foolscap logging; also some code reorganization.
818david-sarah@jacaranda.org**20100514043113
819 Ignore-this: 262f76d953dcd4317210789f2b2bf5da
820] 
821[Change shouldFail to avoid Unicode errors when converting Failure to str
822david-sarah@jacaranda.org**20100512060754
823 Ignore-this: 86ed419d332d9c33090aae2cde1dc5df
824] 
825[Tests for new SFTP implementation
826david-sarah@jacaranda.org**20100512060552
827 Ignore-this: 20308d4a59b3ebc868aad55ae0a7a981
828] 
829[New SFTP implementation: mutable files, read/write support, streaming download, Unicode filenames, and more
830david-sarah@jacaranda.org**20100512055407
831 Ignore-this: 906f51c48d974ba9cf360c27845c55eb
832] 
833[allmydata.org -> tahoe-lafs.org in __init__.py
834david-sarah@jacaranda.org**20100603063530
835 Ignore-this: f7d82331d5b4a3c4c0938023409335af
836] 
837[small change to CREDITS
838david-sarah@jacaranda.org**20100603062421
839 Ignore-this: 2909cdbedc19da5573dec810fc23243
840] 
841[Resolve conflict in patch to change imports to absolute.
842david-sarah@jacaranda.org**20100603054608
843 Ignore-this: 15aa1caa88e688ffa6dc53bed7dcca7d
844] 
845[Minor documentation tweaks.
846david-sarah@jacaranda.org**20100603054458
847 Ignore-this: e30ae407b0039dfa5b341d8f88e7f959
848] 
849[title_rename_xhtml.dpatch.txt
850freestorm77@gmail.com**20100529172542
851 Ignore-this: d2846afcc9ea72ac443a62ecc23d121b
852 
853 - Renamed xhtml Title from "Allmydata - Tahoe" to "Tahoe-LAFS"
854 - Renamed Tahoe to Tahoe-LAFS in page content
855 - Changed Tahoe-LAFS home page link to http://tahoe-lafs.org (added target="blank")
856 - Deleted commented css script in info.xhtml
857 
858 
859] 
860[tests: refactor test_web.py to have less duplication of literal caps-from-the-future
861zooko@zooko.com**20100519055146
862 Ignore-this: 49e5412e6cc4566ca67f069ffd850af6
863 This is a prelude to a patch which will add tests of caps from the future which have non-ascii chars in them.
864] 
865[doc_reformat_stats.txt
866freestorm77@gmail.com**20100424114615
867 Ignore-this: af315db5f7e3a17219ff8fb39bcfcd60
868 
869 
870    - Added heading format begining and ending by "=="
871    - Added Index
872    - Added Title
873           
874    Note: No change are made in paragraphs content
875 
876 
877 **END OF DESCRIPTION***
878 
879 Place the long patch description above the ***END OF DESCRIPTION*** marker.
880 The first line of this file will be the patch name.
881 
882 
883 This patch contains the following changes:
884 
885 M ./docs/stats.txt -2 +2
886] 
887[doc_reformat_performance.txt
888freestorm77@gmail.com**20100424114444
889 Ignore-this: 55295ff5cd8a5b67034eb661a5b0699d
890 
891    - Added heading format begining and ending by "=="
892    - Added Index
893    - Added Title
894         
895    Note: No change are made in paragraphs content
896 
897 
898] 
899[doc_refomat_logging.txt
900freestorm77@gmail.com**20100424114316
901 Ignore-this: 593f0f9914516bf1924dfa6eee74e35f
902 
903    - Added heading format begining and ending by "=="
904    - Added Index
905    - Added Title
906         
907    Note: No change are made in paragraphs content
908 
909] 
910[doc_reformat_known_issues.txt
911freestorm77@gmail.com**20100424114118
912 Ignore-this: 9577c3965d77b7ac18698988cfa06049
913 
914     - Added heading format begining and ending by "=="
915     - Added Index
916     - Added Title
917           
918     Note: No change are made in paragraphs content
919   
920 
921] 
922[doc_reformat_helper.txt
923freestorm77@gmail.com**20100424120649
924 Ignore-this: de2080d6152ae813b20514b9908e37fb
925 
926 
927    - Added heading format begining and ending by "=="
928    - Added Index
929    - Added Title
930             
931    Note: No change are made in paragraphs content
932 
933] 
934[doc_reformat_garbage-collection.txt
935freestorm77@gmail.com**20100424120830
936 Ignore-this: aad3e4c99670871b66467062483c977d
937 
938 
939    - Added heading format begining and ending by "=="
940    - Added Index
941    - Added Title
942             
943    Note: No change are made in paragraphs content
944 
945] 
946[doc_reformat_FTP-and-SFTP.txt
947freestorm77@gmail.com**20100424121334
948 Ignore-this: 3736b3d8f9a542a3521fbb566d44c7cf
949 
950 
951    - Added heading format begining and ending by "=="
952    - Added Index
953    - Added Title
954           
955    Note: No change are made in paragraphs content
956 
957] 
958[doc_reformat_debian.txt
959freestorm77@gmail.com**20100424120537
960 Ignore-this: 45fe4355bb869e55e683405070f47eff
961 
962 
963    - Added heading format begining and ending by "=="
964    - Added Index
965    - Added Title
966             
967    Note: No change are made in paragraphs content
968 
969] 
970[doc_reformat_configuration.txt
971freestorm77@gmail.com**20100424104903
972 Ignore-this: 4fbabc51b8122fec69ce5ad1672e79f2
973 
974 
975 - Added heading format begining and ending by "=="
976 - Added Index
977 - Added Title
978 
979 Note: No change are made in paragraphs content
980 
981] 
982[doc_reformat_CLI.txt
983freestorm77@gmail.com**20100424121512
984 Ignore-this: 2d3a59326810adcb20ea232cea405645
985 
986      - Added heading format begining and ending by "=="
987      - Added Index
988      - Added Title
989           
990      Note: No change are made in paragraphs content
991 
992] 
993[doc_reformat_backupdb.txt
994freestorm77@gmail.com**20100424120416
995 Ignore-this: fed696530e9d2215b6f5058acbedc3ab
996 
997 
998    - Added heading format begining and ending by "=="
999    - Added Index
1000    - Added Title
1001             
1002    Note: No change are made in paragraphs content
1003 
1004] 
1005[doc_reformat_architecture.txt
1006freestorm77@gmail.com**20100424120133
1007 Ignore-this: 6e2cab4635080369f2b8cadf7b2f58e
1008 
1009 
1010     - Added heading format begining and ending by "=="
1011     - Added Index
1012     - Added Title
1013             
1014     Note: No change are made in paragraphs content
1015 
1016 
1017] 
1018[Correct harmless indentation errors found by pylint
1019david-sarah@jacaranda.org**20100226052151
1020 Ignore-this: 41335bce830700b18b80b6e00b45aef5
1021] 
1022[Change relative imports to absolute
1023david-sarah@jacaranda.org**20100226071433
1024 Ignore-this: 32e6ce1a86e2ffaaba1a37d9a1a5de0e
1025] 
1026[Document reason for the trialcoverage version requirement being 0.3.3.
1027david-sarah@jacaranda.org**20100525004444
1028 Ignore-this: 2f9f1df6882838b000c063068f258aec
1029] 
1030[Downgrade version requirement for trialcoverage to 0.3.3 (from 0.3.10), to avoid needing to compile coveragepy on Windows.
1031david-sarah@jacaranda.org**20100524233707
1032 Ignore-this: 9c397a374c8b8017e2244b8a686432a8
1033] 
1034[Suppress deprecation warning for twisted.web.error.NoResource when using Twisted >= 9.0.0.
1035david-sarah@jacaranda.org**20100516205625
1036 Ignore-this: 2361a3023cd3db86bde5e1af759ed01
1037] 
1038[docs: CREDITS for Jeremy Visser
1039zooko@zooko.com**20100524081829
1040 Ignore-this: d7c1465fd8d4e25b8d46d38a1793465b
1041] 
1042[test: show stdout and stderr in case of non-zero exit code from "tahoe" command
1043zooko@zooko.com**20100524073348
1044 Ignore-this: 695e81cd6683f4520229d108846cd551
1045] 
1046[setup: upgrade bundled zetuptoolz to zetuptoolz-0.6c15dev and make it unpacked and directly loaded by setup.py
1047zooko@zooko.com**20100523205228
1048 Ignore-this: 24fb32aaee3904115a93d1762f132c7
1049 Also fix the relevant "make clean" target behavior.
1050] 
1051[setup: remove bundled zipfile egg of setuptools
1052zooko@zooko.com**20100523205120
1053 Ignore-this: c68b5f2635bb93d1c1fa7b613a026f9e
1054 We're about to replace it with bundled unpacked source code of setuptools, which is much nicer for debugging and evolving under revision control.
1055] 
1056[setup: remove bundled copy of setuptools_trial-0.5.2.tar
1057zooko@zooko.com**20100522221539
1058 Ignore-this: 140f90eb8fb751a509029c4b24afe647
1059 Hopefully it will get installed automatically as needed and we won't bundle it anymore.
1060] 
1061[setup: remove bundled setuptools_darcs-1.2.8.tar
1062zooko@zooko.com**20100522015333
1063 Ignore-this: 378b1964b513ae7fe22bae2d3478285d
1064 This version of setuptools_darcs had a bug when used on Windows which has been fixed in setuptools_darcs-1.2.9. Hopefully we will not need to bundle a copy of setuptools_darcs-1.2.9 in with Tahoe-LAFS and can instead rely on it to be downloaded from PyPI or bundled in the "tahoe deps" separate tarball.
1065] 
1066[tests: fix pyflakes warnings in bench_dirnode.py
1067zooko@zooko.com**20100521202511
1068 Ignore-this: f23d55b4ed05e52865032c65a15753c4
1069] 
1070[setup: if the string '--reporter=bwverbose-coverage' appears on sys.argv then you need trialcoverage
1071zooko@zooko.com**20100521122226
1072 Ignore-this: e760c45dcfb5a43c1dc1e8a27346bdc2
1073] 
1074[tests: don't let bench_dirnode.py do stuff and have side-effects at import time (unless __name__ == '__main__')
1075zooko@zooko.com**20100521122052
1076 Ignore-this: 96144a412250d9bbb5fccbf83b8753b8
1077] 
1078[tests: increase timeout to give François's ARM buildslave a chance to complete the tests
1079zooko@zooko.com**20100520134526
1080 Ignore-this: 3dd399fdc8b91149c82b52f955b50833
1081] 
1082[run_trial.darcspath
1083freestorm77@gmail.com**20100510232829
1084 Ignore-this: 5ebb4df74e9ea8a4bdb22b65373d1ff2
1085] 
1086[docs: line-wrap README.txt
1087zooko@zooko.com**20100518174240
1088 Ignore-this: 670a02d360df7de51ebdcf4fae752577
1089] 
1090[Hush pyflakes warnings
1091Kevan Carstensen <kevan@isnotajoke.com>**20100515184344
1092 Ignore-this: fd602c3bba115057770715c36a87b400
1093] 
1094[setup: new improved misc/show-tool-versions.py
1095zooko@zooko.com**20100516050122
1096 Ignore-this: ce9b1de1b35b07d733e6cf823b66335a
1097] 
1098[Improve code coverage of the Tahoe2PeerSelector tests.
1099Kevan Carstensen <kevan@isnotajoke.com>**20100515032913
1100 Ignore-this: 793151b63ffa65fdae6915db22d9924a
1101] 
1102[Remove a comment that no longer makes sense.
1103Kevan Carstensen <kevan@isnotajoke.com>**20100514203516
1104 Ignore-this: 956983c7e7c7e4477215494dfce8f058
1105] 
1106[docs: update docs/architecture.txt to more fully and correctly explain the upload procedure
1107zooko@zooko.com**20100514043458
1108 Ignore-this: 538b6ea256a49fed837500342092efa3
1109] 
1110[Fix up the behavior of #778, per reviewers' comments
1111Kevan Carstensen <kevan@isnotajoke.com>**20100514004917
1112 Ignore-this: 9c20b60716125278b5456e8feb396bff
1113 
1114   - Make some important utility functions clearer and more thoroughly
1115     documented.
1116   - Assert in upload.servers_of_happiness that the buckets attributes
1117     of PeerTrackers passed to it are mutually disjoint.
1118   - Get rid of some silly non-Pythonisms that I didn't see when I first
1119     wrote these patches.
1120   - Make sure that should_add_server returns true when queried about a
1121     shnum that it doesn't know about yet.
1122   - Change Tahoe2PeerSelector.preexisting_shares to map a shareid to a set
1123     of peerids, alter dependencies to deal with that.
1124   - Remove upload.should_add_servers, because it is no longer necessary
1125   - Move upload.shares_of_happiness and upload.shares_by_server to a utility
1126     file.
1127   - Change some points in Tahoe2PeerSelector.
1128   - Compute servers_of_happiness using a bipartite matching algorithm that
1129     we know is optimal instead of an ad-hoc greedy algorithm that isn't.
1130   - Change servers_of_happiness to just take a sharemap as an argument,
1131     change its callers to merge existing_shares and used_peers before
1132     calling it.
1133   - Change an error message in the encoder to be more appropriate for
1134     servers of happiness.
1135   - Clarify the wording of an error message in immutable/upload.py
1136   - Refactor a happiness failure message to happinessutil.py, and make
1137     immutable/upload.py and immutable/encode.py use it.
1138   - Move the word "only" as far to the right as possible in failure
1139     messages.
1140   - Use a better definition of progress during peer selection.
1141   - Do read-only peer share detection queries in parallel, not sequentially.
1142   - Clean up logging semantics; print the query statistics whenever an
1143     upload is unsuccessful, not just in one case.
1144 
1145] 
1146[Alter the error message when an upload fails, per some comments in #778.
1147Kevan Carstensen <kevan@isnotajoke.com>**20091230210344
1148 Ignore-this: ba97422b2f9737c46abeb828727beb1
1149 
1150 When I first implemented #778, I just altered the error messages to refer to
1151 servers where they referred to shares. The resulting error messages weren't
1152 very good. These are a bit better.
1153] 
1154[Change "UploadHappinessError" to "UploadUnhappinessError"
1155Kevan Carstensen <kevan@isnotajoke.com>**20091205043037
1156 Ignore-this: 236b64ab19836854af4993bb5c1b221a
1157] 
1158[Alter the error message returned when peer selection fails
1159Kevan Carstensen <kevan@isnotajoke.com>**20091123002405
1160 Ignore-this: b2a7dc163edcab8d9613bfd6907e5166
1161 
1162 The Tahoe2PeerSelector returned either NoSharesError or NotEnoughSharesError
1163 for a variety of error conditions that weren't informatively described by them.
1164 This patch creates a new error, UploadHappinessError, replaces uses of
1165 NoSharesError and NotEnoughSharesError with it, and alters the error message
1166 raised with the errors to be more in line with the new servers_of_happiness
1167 behavior. See ticket #834 for more information.
1168] 
1169[Eliminate overcounting iof servers_of_happiness in Tahoe2PeerSelector; also reorganize some things.
1170Kevan Carstensen <kevan@isnotajoke.com>**20091118014542
1171 Ignore-this: a6cb032cbff74f4f9d4238faebd99868
1172] 
1173[Change stray "shares_of_happiness" to "servers_of_happiness"
1174Kevan Carstensen <kevan@isnotajoke.com>**20091116212459
1175 Ignore-this: 1c971ba8c3c4d2e7ba9f020577b28b73
1176] 
1177[Alter Tahoe2PeerSelector to make sure that it recognizes existing shares on readonly servers, fixing an issue in #778
1178Kevan Carstensen <kevan@isnotajoke.com>**20091116192805
1179 Ignore-this: 15289f4d709e03851ed0587b286fd955
1180] 
1181[Alter 'immutable/encode.py' and 'immutable/upload.py' to use servers_of_happiness instead of shares_of_happiness.
1182Kevan Carstensen <kevan@isnotajoke.com>**20091104111222
1183 Ignore-this: abb3283314820a8bbf9b5d0cbfbb57c8
1184] 
1185[Alter the signature of set_shareholders in IEncoder to add a 'servermap' parameter, which gives IEncoders enough information to perform a sane check for servers_of_happiness.
1186Kevan Carstensen <kevan@isnotajoke.com>**20091104033241
1187 Ignore-this: b3a6649a8ac66431beca1026a31fed94
1188] 
1189[Alter CiphertextDownloader to work with servers_of_happiness
1190Kevan Carstensen <kevan@isnotajoke.com>**20090924041932
1191 Ignore-this: e81edccf0308c2d3bedbc4cf217da197
1192] 
1193[Revisions of the #778 tests, per reviewers' comments
1194Kevan Carstensen <kevan@isnotajoke.com>**20100514012542
1195 Ignore-this: 735bbc7f663dce633caeb3b66a53cf6e
1196 
1197 - Fix comments and confusing naming.
1198 - Add tests for the new error messages suggested by David-Sarah
1199   and Zooko.
1200 - Alter existing tests for new error messages.
1201 - Make sure that the tests continue to work with the trunk.
1202 - Add a test for a mutual disjointedness assertion that I added to
1203   upload.servers_of_happiness.
1204 - Fix the comments to correctly reflect read-onlyness
1205 - Add a test for an edge case in should_add_server
1206 - Add an assertion to make sure that share redistribution works as it
1207   should
1208 - Alter tests to work with revised servers_of_happiness semantics
1209 - Remove tests for should_add_server, since that function no longer exists.
1210 - Alter tests to know about merge_peers, and to use it before calling
1211   servers_of_happiness.
1212 - Add tests for merge_peers.
1213 - Add Zooko's puzzles to the tests.
1214 - Edit encoding tests to expect the new kind of failure message.
1215 - Edit tests to expect error messages with the word "only" moved as far
1216   to the right as possible.
1217 - Extended and cleaned up some helper functions.
1218 - Changed some tests to call more appropriate helper functions.
1219 - Added a test for the failing redistribution algorithm
1220 - Added a test for the progress message
1221 - Added a test for the upper bound on readonly peer share discovery.
1222 
1223] 
1224[Alter various unit tests to work with the new happy behavior
1225Kevan Carstensen <kevan@isnotajoke.com>**20100107181325
1226 Ignore-this: 132032bbf865e63a079f869b663be34a
1227] 
1228[Replace "UploadHappinessError" with "UploadUnhappinessError" in tests.
1229Kevan Carstensen <kevan@isnotajoke.com>**20091205043453
1230 Ignore-this: 83f4bc50c697d21b5f4e2a4cd91862ca
1231] 
1232[Add tests for the behavior described in #834.
1233Kevan Carstensen <kevan@isnotajoke.com>**20091123012008
1234 Ignore-this: d8e0aa0f3f7965ce9b5cea843c6d6f9f
1235] 
1236[Re-work 'test_upload.py' to be more readable; add more tests for #778
1237Kevan Carstensen <kevan@isnotajoke.com>**20091116192334
1238 Ignore-this: 7e8565f92fe51dece5ae28daf442d659
1239] 
1240[Test Tahoe2PeerSelector to make sure that it recognizeses existing shares on readonly servers
1241Kevan Carstensen <kevan@isnotajoke.com>**20091109003735
1242 Ignore-this: 12f9b4cff5752fca7ed32a6ebcff6446
1243] 
1244[Add more tests for comment:53 in ticket #778
1245Kevan Carstensen <kevan@isnotajoke.com>**20091104112849
1246 Ignore-this: 3bb2edd299a944cc9586e14d5d83ec8c
1247] 
1248[Add a test for upload.shares_by_server
1249Kevan Carstensen <kevan@isnotajoke.com>**20091104111324
1250 Ignore-this: f9802e82d6982a93e00f92e0b276f018
1251] 
1252[Minor tweak to an existing test -- make the first server read-write, instead of read-only
1253Kevan Carstensen <kevan@isnotajoke.com>**20091104034232
1254 Ignore-this: a951a46c93f7f58dd44d93d8623b2aee
1255] 
1256[Alter tests to use the new form of set_shareholders
1257Kevan Carstensen <kevan@isnotajoke.com>**20091104033602
1258 Ignore-this: 3deac11fc831618d11441317463ef830
1259] 
1260[Refactor some behavior into a mixin, and add tests for the behavior described in #778
1261"Kevan Carstensen" <kevan@isnotajoke.com>**20091030091908
1262 Ignore-this: a6f9797057ca135579b249af3b2b66ac
1263] 
1264[Alter NoNetworkGrid to allow the creation of readonly servers for testing purposes.
1265Kevan Carstensen <kevan@isnotajoke.com>**20091018013013
1266 Ignore-this: e12cd7c4ddeb65305c5a7e08df57c754
1267] 
1268[Update 'docs/architecture.txt' to reflect readonly share discovery
1269kevan@isnotajoke.com**20100514003852
1270 Ignore-this: 7ead71b34df3b1ecfdcfd3cb2882e4f9
1271] 
1272[Alter the wording in docs/architecture.txt to more accurately describe the servers_of_happiness behavior.
1273Kevan Carstensen <kevan@isnotajoke.com>**20100428002455
1274 Ignore-this: 6eff7fa756858a1c6f73728d989544cc
1275] 
1276[Alter wording in 'interfaces.py' to be correct wrt #778
1277"Kevan Carstensen" <kevan@isnotajoke.com>**20091205034005
1278 Ignore-this: c9913c700ac14e7a63569458b06980e0
1279] 
1280[Update 'docs/configuration.txt' to reflect the servers_of_happiness behavior.
1281Kevan Carstensen <kevan@isnotajoke.com>**20091205033813
1282 Ignore-this: 5e1cb171f8239bfb5b565d73c75ac2b8
1283] 
1284[Clarify quickstart instructions for installing pywin32
1285david-sarah@jacaranda.org**20100511180300
1286 Ignore-this: d4668359673600d2acbc7cd8dd44b93c
1287] 
1288[web: add a simple test that you can load directory.xhtml
1289zooko@zooko.com**20100510063729
1290 Ignore-this: e49b25fa3c67b3c7a56c8b1ae01bb463
1291] 
1292[setup: fix typos in misc/show-tool-versions.py
1293zooko@zooko.com**20100510063615
1294 Ignore-this: 2181b1303a0e288e7a9ebd4c4855628
1295] 
1296[setup: show code-coverage tool versions in show-tools-versions.py
1297zooko@zooko.com**20100510062955
1298 Ignore-this: 4b4c68eb3780b762c8dbbd22b39df7cf
1299] 
1300[docs: update README, mv it to README.txt, update setup.py
1301zooko@zooko.com**20100504094340
1302 Ignore-this: 40e28ca36c299ea1fd12d3b91e5b421c
1303] 
1304[Dependency on Windmill test framework is not needed yet.
1305david-sarah@jacaranda.org**20100504161043
1306 Ignore-this: be088712bec650d4ef24766c0026ebc8
1307] 
1308[tests: pass z to tar so that BSD tar will know to ungzip
1309zooko@zooko.com**20100504090628
1310 Ignore-this: 1339e493f255e8fc0b01b70478f23a09
1311] 
1312[setup: update comments and URLs in setup.cfg
1313zooko@zooko.com**20100504061653
1314 Ignore-this: f97692807c74bcab56d33100c899f829
1315] 
1316[setup: reorder and extend the show-tool-versions script, the better to glean information about our new buildslaves
1317zooko@zooko.com**20100504045643
1318 Ignore-this: 836084b56b8d4ee8f1de1f4efb706d36
1319] 
1320[CLI: Support for https url in option --node-url
1321Francois Deppierraz <francois@ctrlaltdel.ch>**20100430185609
1322 Ignore-this: 1717176b4d27c877e6bc67a944d9bf34
1323 
1324 This patch modifies the regular expression used for verifying of '--node-url'
1325 parameter.  Support for accessing a Tahoe gateway over HTTPS was already
1326 present, thanks to Python's urllib.
1327 
1328] 
1329[backupdb.did_create_directory: use REPLACE INTO, not INSERT INTO + ignore error
1330Brian Warner <warner@lothar.com>**20100428050803
1331 Ignore-this: 1fca7b8f364a21ae413be8767161e32f
1332 
1333 This handles the case where we upload a new tahoe directory for a
1334 previously-processed local directory, possibly creating a new dircap (if the
1335 metadata had changed). Now we replace the old dirhash->dircap record. The
1336 previous behavior left the old record in place (with the old dircap and
1337 timestamps), so we'd never stop creating new directories and never converge
1338 on a null backup.
1339] 
1340["tahoe webopen": add --info flag, to get ?t=info
1341Brian Warner <warner@lothar.com>**20100424233003
1342 Ignore-this: 126b0bb6db340fabacb623d295eb45fa
1343 
1344 Also fix some trailing whitespace.
1345] 
1346[docs: install.html http-equiv refresh to quickstart.html
1347zooko@zooko.com**20100421165708
1348 Ignore-this: 52b4b619f9dde5886ae2cd7f1f3b734b
1349] 
1350[docs: install.html -> quickstart.html
1351zooko@zooko.com**20100421155757
1352 Ignore-this: 6084e203909306bed93efb09d0e6181d
1353 It is not called "installing" because that implies that it is going to change the configuration of your operating system. It is not called "building" because that implies that you need developer tools like a compiler. Also I added a stern warning against looking at the "InstallDetails" wiki page, which I have renamed to "AdvancedInstall".
1354] 
1355[Fix another typo in tahoe_storagespace munin plugin
1356david-sarah@jacaranda.org**20100416220935
1357 Ignore-this: ad1f7aa66b554174f91dfb2b7a3ea5f3
1358] 
1359[Add dependency on windmill >= 1.3
1360david-sarah@jacaranda.org**20100416190404
1361 Ignore-this: 4437a7a464e92d6c9012926b18676211
1362] 
1363[licensing: phrase the OpenSSL-exemption in the vocabulary of copyright instead of computer technology, and replicate the exemption from the GPL to the TGPPL
1364zooko@zooko.com**20100414232521
1365 Ignore-this: a5494b2f582a295544c6cad3f245e91
1366] 
1367[munin-tahoe_storagespace
1368freestorm77@gmail.com**20100221203626
1369 Ignore-this: 14d6d6a587afe1f8883152bf2e46b4aa
1370 
1371 Plugin configuration rename
1372 
1373] 
1374[setup: add licensing declaration for setuptools (noticed by the FSF compliance folks)
1375zooko@zooko.com**20100309184415
1376 Ignore-this: 2dfa7d812d65fec7c72ddbf0de609ccb
1377] 
1378[setup: fix error in licensing declaration from Shawn Willden, as noted by the FSF compliance division
1379zooko@zooko.com**20100309163736
1380 Ignore-this: c0623d27e469799d86cabf67921a13f8
1381] 
1382[CREDITS to Jacob Appelbaum
1383zooko@zooko.com**20100304015616
1384 Ignore-this: 70db493abbc23968fcc8db93f386ea54
1385] 
1386[desert-island-build-with-proper-versions
1387jacob@appelbaum.net**20100304013858] 
1388[docs: a few small edits to try to guide newcomers through the docs
1389zooko@zooko.com**20100303231902
1390 Ignore-this: a6aab44f5bf5ad97ea73e6976bc4042d
1391 These edits were suggested by my watching over Jake Appelbaum's shoulder as he completely ignored/skipped/missed install.html and also as he decided that debian.txt wouldn't help him with basic installation. Then I threw in a few docs edits that have been sitting around in my sandbox asking to be committed for months.
1392] 
1393[TAG allmydata-tahoe-1.6.1
1394david-sarah@jacaranda.org**20100228062314
1395 Ignore-this: eb5f03ada8ea953ee7780e7fe068539
1396] 
1397Patch bundle hash:
1398c905fdd3366662f63973c05252fced1d7ac4e0fa