[not to be removed until the end of 2013] DEAR PACKAGE MAINTAINER: If you are packaging duplicity for some distribution and used to remove GnuPGInterface.py please note this: *** Duplicity really does need its patched version of GnuPGInterface *** See README for details. New in v0.6.21 (2013/01/23) --------------------------- Enhancements: * Merged in lp:~ed.so/duplicity/24syntaxfix - fix python 2.4 vs 2.5 syntax error * Merged in lp:~mterry/duplicity/u1-oauthlib - As the Ubuntu packager for duplicity, I would prefer u1backend.py used oauthlib instead of oauth. oauthlib is well maintained upstream (unlike oauth), has a python3 port (for the future), and is in Ubuntu main (so is oauth right now, but hopefully in the future we can drop it to universe, in which case duplicity can't use it anymore). * Merged in lp:~mterry/duplicity/delete-new-sig-in-cache - In duplicity 0.6.20, we fixed bug 1031269. This means that we no longer leave sig files on the remote location. Leaving sig files on the remote location also caused a bug with deleting cache files. Code used to leave remote new-sig but delete the locale cache new-sig; this meant that we would keep downloadoing the new-sig all the time from remote. We had worked around that by just not deleting the new-sig in the cache, which was sort of the wrong side of that problem to tackle. Now that we handle the remote new-sigs better (by deleting them), I don't think we need this code anymore. Patch by az@debian.org. * Merged in lp:~mterry/duplicity/u1-ascii-error - Fix for u1backend unicode error. Patch by Paul Barker. * Merged in lp:~satwell/duplicity/caching - Add a cache for password and group lookups. This significantly improves runtime with very large password and group configurations. * Merged in lp:~ed.so/duplicity/manpage - more formatting fixes, clarifications in sections EXAMPLES, FILE SELECTION * Merged in lp:~ed.so/duplicity/lftp.netrc - Allow .netrc auth for lftp backend * Merged in lp:~mterry/duplicity/946988 - This fixes bug 946988 by not duplicating the checks for when we should ask for the password (those same checks are done more correctly inside get_passphrase). And add a test to reproduce the bug. * Merged in lp:~lenharo-h/duplicity/duplicity - Generate encrypted backups without revealing the user's key id via option --hidden-encrypt-key * Merged in lp:~mterry/duplicity/u1-utf8 - Make sure u1backend returns filenames as utf8 * Merged in lp:~carlos-abalde/duplicity/gdocs-backend-gdata-2.0.16.-upgrade - Upgrade of GoogleDocs backend to python gdata lib >= 2.0.15: Stop using get_everything method. * Merged in lp:~ed.so/duplicity/webdav.fix-retry - bugfix: webdav retrying broke on ERRORS like "error: [Errno 32] Broken pipe" in socket.pyas reported here https://answers.launchpad.net/duplicity/+question/212966 added a more generalized 'retry_fatal' decorator which makes retrying backend methods even easier * Merged in lp:~ed.so/duplicity/manpage - Clear up PASSPHRASE reusage as sign passphrase. Minor fixes. * Merged in lp:~ed.so/duplicity/u1_and_manpage - Manpage - document Ubuntu One required python libs - added continuous contributors and backend author notes - U1backend - lazily import non standard python libs, fixes http://article.gmane.org/gmane.comp.sysutils.backup.duplicity.general/5753 - fix "not bytearray" prevents PUT with python 2.6 - don't hang after putting in credentials (cause it silently retries in background) but go through with backup * Fixed 1091269 Data corruption when resuming with --no-encryption - Patches from Pascual Abellan that make block size consistent and that add -n (no-encryption) option to manual-ctrl-c-test.sh. - Modified gpg.py patch to use 64k block size so unit test passes. * Merged in lp:~mterry/duplicity/static-corruption - This branch fixes three possible ways a backup could get data-corrupted. Inspired by bug 1091269. A) If resuming after a volume that ended in a one-block file, we would skip the first block of the next file. B) If resuming after a volume that ended in a multi-block file, we would skip the first block of the next file. C) If resuming after a volume that spanned a multi-block file, we would skip some data inside the file. - A and B are because when finding the right place in the source files to restart the backup, the iteration loop didn't handle None block numbers very well (which are used to indicate the end of a file). - C is what bug 1091269 talks about. This was because data block sizes would get smaller as the difftar file got closer and closer to the volsize. Standard block sizes were 64 * 1024. But say we were close to the end of the difftar... When resuming, duplicity doesn't know the custom block sizes used by the previous run, so it uses standard block sizes. And it doesn't always match up, as you can imagine. So we would leave chunks of data out of the backed up file. - Tests added for these cases. - This branch is called 'static-corruption' because all these issues occur even when the source data doesn't change. I still think there are some corruption issues when a file changes in between duplicity runs. I haven't started looking into that yet, but that's next on my list. - C only happened without encryption (because the gpg writer function already happened to force a constant data block size). A and B happened with or without encryption. * Merged in lp:~ed.so/duplicity/webdav.fix-retry - added ssl certificate verification (see man page) - more robust retry routine to survive ssl errors, broken pipe errors - added http redirect support * Merged in lp:~ed.so/duplicity/webdav.manpage - explanation of webdav changes above * Merged in lp:~mterry/duplicity/pygi - Python bindings for the gobject stack (used in the gio backend) have changed from static to dynamically-generated bindings. The old static bindings are deprecated. So here's a branch to change the gio backend from old to new ones. * Merged in lp:~mterry/duplicity/py3rsync - This branch lets one build the _librsync module with Python 3. You can't really do anything useful with it, but it's a nicely-isolated piece to add Python 3 support for. - The changes are a mix of modernization and #ifdef logic. - All tests still pass in Python 2.7 and 2.4. I tested manually that the module worked as expected in Python 3. * Merged in lp:~duplicity-team/duplicity/po-updates - Updated translations New in v0.6.20 (2012/10/28) --------------------------- Enhancements: * Merged in lp:~ed.so/duplicity/ssh.manpage - added gdocs and rsync REQUIREMENTS - added cloudfiles documentation * Merged in lp:~ed.so/duplicity/gpginterface - refactor GnuPGInterface to gpginterface.py reasoning can be found in README * Merged in lp:~ed.so/duplicity/duplicity.helpfix - fix rare 'TypeError: encode() argument 1 must be string, not None' - http://lists.nongnu.org/archive/html/duplicity-talk/2012-09/msg00016.html * Merged in lp:~ed.so/duplicity/duplicity.tmpspacefix - use tempfile.TemporaryFile() so unused temp files are deleted automagically - propbably solve bug 'Out of space error while restoring a file' - https://bugs.launchpad.net/duplicity/+bug/1005901 - http://lists.gnu.org/archive/html/duplicity-talk/2012-09/msg00000.html * Merged in lp:~mterry/duplicity/utf8-po - For some crazy reason, the gettext module defaults to giving you strings in whatever charset the po file happened to define. Which means you never know what string of bytes you're going to get. This module makes sure we always get utf-8 byte strings. So we're at least predictable and reduces one source of UnicodeDecodeErrors (like in bug 989496) * Merged in lp:~mterry/duplicity/1031277 - ssh: actually delete all the requested files, not just the first one * Merged in lp:~mterry/duplicity/leftover-sigtar - So currently, duplicity does not delete signature files when doing a remove-all-but-n operation. Seems wrong, since those signature files are now useless and take up space. - This branch does several things: 1) Make remove-all-but-n operate on chains. In practice it did before, since the sets it operated on always came from complete chains (i.e. it never used only some of the sets from a chain) 2) Add a new method to get all signature chains before a certain time. 3) Use this new method to also delete signature chains during remove-all-but operations. - And it cleans up the cleanuptest.py file: 1) Removes crufty, unused code 2) Disallows changing the destination folder for the test, which no one would ever want to do and isn't really supported anyway 3) Add some additional checks to the existing test 4) Adds two new methods to test remove-all-but-n and remove-all-inc-of-but-n-full * Merged in lp:~ed.so/duplicity/duplicity.manpage - disabled hyphenation and block justification for better readablility of command line examples. - reformatted REQUIREMENTS section for hopefully better online rendering - minor clarifications * Merged in lp:~gregretkowski/duplicity/cf-retry-delete - This will retry cloudfile delete commands. With large numbers of archive files over mediocre links transient network errors will occasionally cause deletes to fail and these should be retried. * Merged in lp:~mterry/duplicity/ropath.index - This branch does two main things: 1) Skips base dir entries when compiling the list of deleted delta iters. (this gracefully recovers from the sort of situations that lead to bug 929067). I'm reasonably confident this is an uninvasive change, but please confirm. 2) Overwrites the sigtar file on backup-restart. This is because AFAICT, duplicity will rewrite the entire sigtar each restart. But we were opening the sigtar file as "ab", so we'd just dump the contents on top of the previous contents. Which was causing some confusion in bug 929067. If I'm wrong that we don't always rewrite the entire sigtar each time, this needs some rethink. Please also confirm that. - In addition, I added two tests for the above two changes and make some improvements elsewhere in the restarttest.py file while I was at it. * Merged in lp:~ed.so/duplicity/ssh-pexpect-msgbug - Fixes 'UnboundLocalError: local variable 'msg' referenced before assignment' in _ssh_pexpect.py * Merged in lp:~ed.so/duplicity/gpg.tmp - place gpg.py tempfiles in duplicity's tmp subfolder which is cleaned whatever happens * Merged in lp:~mterry/duplicity/u1-402 - Switch the code we check for out-of-space in u1backend. * Applied patch for #1066625 ubuntu one backend - add delay between retries Bugs closed in this release: 519948 remove-* commands don't remove signature-files 907077 assert len(chain_list) == 2 AssertionError 929067 crash during restore: "assert ropath.index == (), ropath.index" 995851 doc improvement for --encrypt-key, --sign-key 997691 Ubuntu One backend should check for 402 error for out-of-space 1031269 remove-all-but-n-full broken 1039001 --exclude-if-present and --exclude-other-filesystems causes crash with inaccessible other fs 1066625 ubuntu one backend does not work without gnome/dbus/x11 session New in v0.6.19 (2012/05/22) --------------------------- Enhancements: * lots of work on the man page to clean up requirements, etc. * use empty listbody for enhanced webdav compatibility * initial folder creation on backend does not result in a ResponseNotReady anymore * add ssh_config support (/etc/ssh/ssh_config + ~/.ssh/config) to paramiko sshbackend * add missing_host_key prompt to new sshbackend similar to ssh procedure * added --ssh-backend parameter to switch between paramiko,pexpect * allow answering gio mount questions (albeit naively) * if the gio backend wants to ask a question during its mount phase, it previously just aborted. * a couple more warning error codes that Deja Dup is interested in noticing. * ssh paramiko backend respects --num-retries now * set retry delay for ssh backends to 10s * ssh pexpect backend + sftp part does not claim 'Invalid SSH password' although it's only 'Permission denied' now + sftp errors are now more talkative * gpg.py + commented assert which broke otherwise working verify run Bugs closed in this release: 588541 Connection failed, please check your password: Login dialog cancelled Merges: lp:~ed.so/duplicity/0.6-manpage lp:~ed.so/duplicity/0.6-webdav_fixes lp:~carlos-abalde/duplicity/gdocs-backend-gdata-2.0.16.-upgrade. lp:~ed.so/duplicity/0.6-ssh_add_missinghostkey lp:~ed.so/duplicity/0.6-readd_sshpexpect New in v0.6.18 (2012/02/29) --------------------------- Enhancements: * fix extraneous '.py' in botobackend.py include * tests: add delay between backups to avoid assertion error * tests: use backup source that is more likely to be larger than 1M compressed * tests: make other-filesystem check more robust against certain directories being mounts or not * resuming an incremental results in a 'Restarting backup, but current encryption settings do not match original settings' error because curtime is incorrectly set away from previous incremental value * added option to not compress the backup, when no encryption is selected * always delay a little bit when a backend gives us errors * Don't cache TarInfo files. Tests still pass, so I don't believe we need the members cache (and in the old tarfile.py, we didn't cache either). * Adding --file-prefix option so different sets of backups can be stored in the same bucket. See blueprint at https://blueprints.launchpad.net/duplicity/+spec/file-prefix-option * two changes that help the test suite pass * raise log level on backend import failure so it will be visible under default conditions * file /etc/motd may not exist in test environment. Use __file__ instead to point to a known plaintext source file. * some code/import changes to make the ssh and boto backends compatible with Python 2.4. * some changes to make roottest.py compatible with the new dir structure. Bugs closed in this release: 884638 Python 2.5 / boto error 908228 possible memory leak 909031 SSH-Backend: Creating dirs separately causes a permissons-problems 916689 multipart upload fails on python 2.7.2 929465 UnsupportedBackendScheme: scheme not supported in url: scp://u123@u123.example.com/foo/ 930727 ftpsbackend should respect num_retries for ftp commands 931175 duplicity crashes when PYTHONOPTIMIZE is set Merges: lp:~mterry/duplicity/always-delay lp:~mterry/duplicity/memleak lp:~mterry/duplicity/nopexpect lp:~mterry/duplicity/resume-inc lp:~mterry/duplicity/testfixes lp:~nguyenqmai/duplicity/file-prefix-option lp:~tobias-genannt/duplicity/nocompress New in v0.6.17 (2011/11/25) --------------------------- Enhancements: * Added --rsync-options flag to allow user to pass options to rsync at will * Added --s3-use-multiprocessing to select the new s3 multiprocessing backend. Default is to use the single processing backend. A helper, filechunkio.py, requires Python 2.6+, so this option is not usable in earlier versions. Bugs closed in this release: 411145 Misleading error message: "Invalid SSH password" 871875 File ... was corrupted during upload. 878220 UnsupportedBackendScheme: scheme not supported in url: s3+http 878964 Resuming a backup with a different password should throw an error 881070 Bugfix for S3 multipart upload on 0.6.16 881727 duplicity 0.6.16 lists all backup sets as incomplete 885670 Duplicity fails to add incremental backups to chain... Merges: lp:~mterry/duplicity/check-passphrase-on-restart lp:~moss-d/duplicity/rsync-options New in v0.6.16 (2011/10/16) ---------------------------- Enhancements: * Usability enhancement: sign passphrase prompt has no second verification prompt anymore, symmetric passphrases are still verified * Fixed Unicode errors when translations are used. * Replaced old tarfile.py with Python 2.7 version, modded to support Python 2.4 syntax. Bugs closed in this release: 485219 Fixed fields are not fixed, leading to buffer overflows... 676109 Amazon S3 backend multipart upload support 690549 uid and guid setting adversely affects integrity 739438 Local backend should always try renaming instead of copying 832149 Uploads to Rackspace fail silently 835892 duplicity crash: "AssertionError: rb None None" 838162 Duplicity URL Parser is not parsing IPv6 properly 838264 Duplicity thinks partial encrypted backups are not encrypted 870116 Duplicity does not handle UIDs higher than 60001 Merges: lp:~ed.so/duplicity/reuse-passphrase-for-signing-fix lp:~mterry/duplicity/cloudfiles-10k lp:~duplicity-team/duplicity/check-volumes lp:~mterry/duplicity/tarfile lp:~mterry/duplicity/partial-encryption lp:~mterry/duplicity/fix-local-backend-validation lp:~ross-ross-williams/duplicity/gpg-agent-fix lp:~mterry/duplicity/rbNoneNone lp:~ed.so/duplicity/UnicodeDecodeError New in v0.6.15 (2011/08/19) --------------------------- Enhancements: * Ignore 404 errors when deleting a file on Ubuntu One. * Ignore ENOENT (file missing) errors where it is safe. * Set minimum Python version to 2.4 in README. * introduce --numeric-owner parameter patch courtesy of Lukas Anzinger * duplicity:restore_check_hash "Invalid data - *** hash mismatch" lists the offending filename * fixes to unit tests to support SIGN_PASSPHRASE Bugs closed in this release: 524922 duplicity does not have numeric uid/gid support 703142 AssertionError: assert len(chain_list) == 2 794576 Transport endpoint is not connected 815635 Bad passphrase can leave bogus sigtar in archive 818178 Shouldn't try to delete files it knows don't exist 821368 Error doing backup of the .evolution folder 823556 sftp errors after rev 740 change 824678 0.6.14 Fails to install on 8.04 LTS (Hardy) Merges: lp:~mterry/duplicity/u1-ignore-404 lp:~mterry/duplicity/guard-tarinfo lp:~mterry/duplicity/enotconn lp:~mterry/duplicity/look-at-partials-during-sync lp:~mterry/duplicity/more-accurate-sync lp:~mterry/duplicity/report-encrypted-chains lp:~mterry/duplicity/815635 lp:~mterry/duplicity/retry-u1 lp:~mterry/duplicity/818178 lp:~ed.so/duplicity/encr-sign-key2 lp:~mterry/duplicity/u1-fixes lp:~carlos-abalde/duplicity/google-docs lp:~ed.so/duplicity/numowner+hashverbose New in v0.6.14 (2011/06/18) --------------------------- Enhancements: 452342 Provide Ubuntu One integration Bugs closed in this release: 433591 AttributeError: FileobjHooked instance has no attribute 'name' 487720 Restore fails with "Invalid data - SHA1 hash mismatch" 507904 Cygwin: Backup fails with "IOError: [Errno 13] Permission denied" 512628 --exclude-filelist-stdin and gpg error with/without PASSPHRASE 680425 Endless retype passphrase when typo 705499 "include-filelist-stdin" not implemented on version 0.6.11 739438 [PATCH] Local backend should always try renaming instead of copying 753858 cannot import name S3ResponseError 761688 Difference found: File X has permissions 666, expected 666 777377 collection-status asking for passphrase 778215 ncftpls file delete fails in ftpbackend.py 782294 create tomporary files with sftp 782321 duplicity sftp backend should ignore removing a file not there 792704 Webdav(s) url scheme lacks port support 782294 create tomporary files with sftp 782337 sftp backend cannot create new subdirs on new backup 794123 Timeout on sftp command 'ls -1' 797758 Duplicity ignores some FatalErrors 793096 Allow to pass different passwords for --sign-key and --encrypt-key Merges: lp:~ed.so/duplicity/0.6-add_sftp lp:~ed.so/duplicity/0.6-nonfatal-exclude lp:~lekensteyn/duplicity/multipass lp:~mterry/duplicity/797758 lp:~mterry/duplicity/gio-name lp:~mterry/duplicity/levelName lp:~mterry/duplicity/retry-decorator lp:~mterry/duplicity/u1-status New in v0.6.13 (2011/04/02) --------------------------- Enhancements added this release: New manual test to make Ctrl-C issues easier to replicate. Use python-virtualenv to make testing multiple Python versions easier. In boto backend check for existing bucket before trying to create. Bugs closed in this release: 579958 Assertion error "time not moving forward at appropriate pace" 613244 silent data corruption with checkpoint/restore 731905 File "/usr/bin/duplicity", error after upgrade from 6.11 to 6.12 New in v0.6.12 (2011/03/08) --------------------------- Enhancements added this release: 626915 ftps support using lftp (ftpsbackend) Bugs closed in this release: 486489 Only full backups done on webdav 578663 Use log codes for common backend errors 581054 Inverted "Current directory" "Previous directory" in error message 620163 OSError: [Errno 2] No such file or directory 629136 sslerror: The read operation timed out with cf 629984 boto backend uses Python 2.5 conditional 655797 symbolic link ownership not preserved 670891 Cygwin: TypeError: basis_file must be a (true) file ... 681980 Duplicity 0.6.11 aborts if RSYNC_RSH not set 700390 Backup fails silently when target is full (sftp, verbosity=4) 704314 Exception in log module Merges: lp:~mterry/duplicity/backend-log-codes3 lp:~blueyed/duplicity/path-enodev-bugfix New in v0.6.11 (2010/11/20) --------------------------- Bugs closed in this release: 433970 Add an option to connect to S3 with regular HTTP (and not HTTPS) 578663 Use log codes for common backend errors 631275 missing ssh on rsyncd url - rsync: Failed to exec ssh: ... 635494 backed up to S3, wiped drive, reinstalled, unable to restore backup 637556 os.execve should get passed program as first argument 669225 sftp: "Couldn't delete file: Failure'" only logged on level 9 655468 0.6.10 does not work with S3 674506 RsyncBackend instance has no attribute 'subprocess_popen_persist' Merges: lp:~blueyed/duplicity/bug-669225 lp:~duplicity-team/duplicity/po-updates lp:~ed.so/duplicity/0.6.10-backend_fixes lp:~ed.so/duplicity/RSYNC_RSH-fix lp:~ed.so/duplicity/sign_symmetric2 lp:~ed.so/duplicity/survive_spaces lp:~l2g/duplicity/use-py.test lp:~mbp/duplicity/433970-non-ssl New in v0.6.10 (2010/09/19) --------------------------- Bugs closed in this release: 542482 Offer command to remove old incremental backups from target 578663 Use log codes for common backend errors 589495 duplicity --short-filenames crashes with TypeError 612714 NameError: global name 'parsed_url' is not defined 613448 ftpbackend fails if target directory doesn't exist 615449 Command-line verbosity parsing crash New in v0.6.09 (2010/07/25) --------------------------- Bugs closed in this release: 502609 Unknown error while uploading duplicity-full-signatures 539393 Duplicity returns 1 when continuing an interrupted backup 550455 duplicity doesn't handle with large files well 567738 --ssh-options options passing options to ssh do not work 576564 username not url decoded in backend (at least rsync) 579958 Assertion error "time not moving forward at appropriate pace" 582962 Diminishing performance on large files Upgraded tahoebackend to new parse_url. Fix to warning message in sshbackend. New in v0.6.08b (2010/03/11) ---------------------------- Fix bug where encrypted backup without --gpg-options crashes. This was a followup issue to bug 490619 released in 0.6.07. This is attempt #2 -- not sure what happened to the patch, but it did not show up in 0.6-series like it should have. New in v0.6.08a (2010/03/11) ---------------------------- Fix bug where encrypted backup without --gpg-options crashes. This was a followup issue to bug 490619 released in 0.6.07. New in v0.6.08 (2010/03/07) --------------------------- Bugs closed in this release: 519110 Need accurate man page info on use of scp/sftp usage. 532051 rdiffdir attempts to reference undefined vars with some command args 529869 TypeError: unsupported operand type(s) for -: 'NoneType' and 'int' 530910 TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' New in v0.6.07 (2010/02/28) --------------------------- Bugs closed in this release: 459511 --tempdir option doesn't override TMPDIR 467391 [PATCH] WebDAV backend doesn't work 487686 re-add scp backend and make available via command line option 490619 Use optparse not getopt 497243 0.6.06, archive dir: cache desynchronization caused by remove* 501093 SSHBackend doesn't handle spaces in path 505739 "sslerror: The read operation timed out" with S3 520470 Don't Warn when there's old backup to delete 522544 OSError: [Errno 40] Too many levels of symbolic links 388673 Allow renaming paths as they are restored New in v0.6.06 (2009/10/29) --------------------------- Merged in lp:~mterry/duplicity/list-old-chains List/keep old signature chains Applied patches from Kasper Brand that fixed device file handling. http://lists.gnu.org/archive/html/duplicity-talk/2009-09/msg00001.html Merged in lp:~l2g/duplicity/flag-transl-comments which cleared up how translation comments should be passed to the translators cleanly now. Applied 422477; [PATCH] IMAP Backend Error in delete() Merged in lp:~mterry/duplicity/iterate-warnings Add machine codes to various warnings when iterating over source files Fix problems with unittests under Jaunty. It appears that redirection in os.system() has changed for the worse, so a workaround for now. Fix problem in restart where there were no manifest entries and no remote volumes stored. We clean out the partial and restart. Fixed 435975 gpg asks for password in 0.6.05, but not in 0.5.18 New in v0.6.05 (2009/08/28) --------------------------- Merged in lp:~l2g/duplicity/test-compat from Larry Gilbert which made the testing compatible across more systems. Also fixed the remaining collectionstest bug which was trying to test with no cache present. Bugs fixed this release: 407968 GIO backend can't restore 408059 Failure due to _logger.log failure for content with special characters: TypeError decoding Unicode not supported 409593 deja-dup (or duplicity) deletes all signatures 412667 "duplicity remove-older-than" asks for passphrase even though not required 418170 [PATCH] file names longer then 512 symbols are not supported New in v0.6.04 (2009/08/01) --------------------------- One major and one minor change. The "No such file or directory" error is bad enough that this should be released quickly. For those of you using encryption, this is not a problem, but for those of you that do not use encryption (--no-encryption), then this will manifest itself if the local cache gets out of sync with the remote store. Bugs fixed this release: 405734 duplicity fails to restore files that contain a newline character 403790 Backup error: No such file or directory New in v0.6.03 (2009/07/29) --------------------------- Lots of small changes and some bug fixes. * Restart error handling has been smoothed out a great deal and it "does what is right" in order to keep going. * Backends are now optional, if they fail an Info message is put out to notify of the failure and why. * There was more work on translations and internationalization. Thanks to everyone! Bugs fixed this release: 377528 --file-to-restore doesn't work with trailing slash 394757 Backend imports should be made optional 398230 Deja-dup backup fails with message: "Unable to locate last file" 401303 0.6.2 manpage inconsistent wrt. archive-dir/name 405646 Small i18n error 405975 duplicity.gpg.gpg_failed() breaks and spews on GnuPG error 402794 duplicity public-key-only incompatible with gnupg 2.0.11 New in v0.6.02 (2009/07/07) --------------------------- Duplicity will now remove any spurious files left in the cache from a previous run. This will keep the metadata cache in sync with the remote storage metadata. Bugs fixed this release: 394629 Hang on first collection-status 379386 Fix 'list-current-files' with missing archive dir 395826 "No such file or directory" when backing up second time 394627 User-friendly archive dir print 388699 Manifest mismatch error New in v0.6.01 (2009/07/01) --------------------------- Fixed issues in Checkpoint/Restart: * The --name backupname" option was added to allow the user to separate one archive from another. If not specified, the default is an MD5 hash of the target URL, which should suffice for most uses. * The archive_dir (cache) is now stored in a standard location, defaulting to ~/.cache/duplicity. See http://standards.freedesktop.org/basedir-spec/latest/ * The interaction between the --archive-dir option and the --name option allows for four possible results for the location of the archive dir. - neither specified (default) ~/.cache/duplicity/hash-of-url - --archive-dir=~/arch, no --name ~/arch/hash-of-url - no --archive-dir, --name=foo ~/.cache/duplicity/foo - --archive-dir=~/arch, --name=foo ~/arch/foo * duplicity will now copy needed metadata from the remote store to the local cache as needed. This means that the first use after upgraded from 0.5.x will have the metadata copied to the local archive dir in order to sync both. * cleanup will now work correctly with the archive dir and separates the local from the remote files. Bugs fixed this release: * 388034 Unable to backup * 378940 python2-6 issue / UTF-8 charset / Ubuntu 9.04 * 379386 Fix list-current-files w/ missing archive dir * 387102 Asynchronous upload not working properly * 387218 Make scp/ssh into sftp-only backend * 388992 List of Orphaned Files Growing * 392905 NoneType object has no attribute 'startswith' * 393372 Error creating directory * 383412 Add InfoCodes for upload events * 383419 Add gio backend New in v0.6.00 (2009/06/08) --------------------------- Checkpoint/Restart capability added. Checkpoint is done at every volume written and Restart is done at start of the next volume in the set. Changes to normal operations include a permanent duplicity archive-dir at ~/.duplicity to save state. To accomplish this, the signature and archive files in the archive-dir now have three states: 1) temporary until the first volume has been written, 2) partial until the final volume has been written and sent to remote storage, 3) permanent with the same name as always. Assumptions are made that if a restart is needed, then all arguments are the same as before and that no files have been removed from the file system between runs. From now on, the --archive-dir option can be used to change the location of the archive dir, but you are responsible for moving the files if you change it. Other fixes: Unicode filenames in log messages are now OK. Fixed problem where Cygwin was returning -1 for the hard max open file limit. New in v0.5.18 (2009/05/20) --------------------------- Added support for RackSpace's CloudFiles, cf+http. Added support for Tahoe-LAFS from the patch, patch #6743: Tahoe backend for duplicity https://savannah.nongnu.org/patch/?6743 Only half of this bug is fixed but it's still useful. bug #21792: pipe call fails with an error OSError: [Errno 24] Too many open files https://savannah.nongnu.org/bugs/?21792 Changed from using ulimit external command to resource.getrlimit to check open files limit. New in v0.5.17 (2009/05/04) --------------------------- Removed one line of code left from some testing that I did that caused a crash when the target dir was empty and collection-status was requested. Moved from using the df command to get temp space availability to Python's os.statvfs() call. Not all df commands work the same way. patch #6813: Making changelist easy to read https://savannah.nongnu.org/patch/?6813 patch #6814: Ignore comments in filelists https://savannah.nongnu.org/patch/?6814 New in v0.5.16 (2009/04/21) --------------------------- bug #24825: duplicity warn on insufficient TMPDIR space availability and low max open file limits pre-backup. https://savannah.nongnu.org/bugs/?24825 bug #25594: wrong backup statistics https://savannah.nongnu.org/bugs/?25594 bug #25976: Password requested when not needed. https://savannah.nongnu.org/bugs/?25976 patch #6806: More graceful handling of old --short-filename files https://savannah.nongnu.org/patch/?6806 Added tilde and variable expansion to the source or target argument that is not a URL. New in v0.5.15 (2009/04/09) --------------------------- FTP backend was failing on PureFTPd when the "-x ''" option was removed from the second ncftpls popen, a fix that was implemented due to bug #24741. This fix does the ls in one pass by extracting the last entry on the 'ls -l' listing. If a file is unreadable due to access rights or other non-fatal errors, put out error message and continue rather than dying messily with a traceback. Added tilde '~' expansion and variable expansion in the options that require a filename. You can now have this "--archive-dir=~/ArchDir/$SYSNAME" if you need it. No expansion is applied to the source or target URL's. Fixed problem I caused, again, where sys.exit() was trapping instead of exiting. Added big note to not to do that again. New in v0.5.14 (2009/04/02) --------------------------- After email voting among known duplicity contributors, the decision was reached to revert to the GPL Version 2 license, so with their consensus, duplicity is now under GPL Version 2. Revert to calling NcFTP utilities (ls, get, put) directly rather than scripting ncftp via pexpect by reverting to the 0.5.07 version of ftpbackend.py. Changed fatal error regarding version 3.2.0 of ncftpput to warning level since it has been reported that the problem does not occur on most distributions. Changed from log.Log with numbered log levels to log.Debug, log.Info, log.Notice, log.Warn, log.FatalError as below: 0 log.FatalError 1-2 log.Warn 3-4 log.Notice 5-8 log.Info 9 log.Debug The -vN option has not changed. Verbosity may also be one of: character [ewnid], or word ['error', 'warning', 'notice', 'info', 'debug']. The default is 4 (Notice). The options -v4, -vn, and -vnotice are functionally equivalent, as are the mixed-case versions, -vN, -vNotice, -vNOTICE. Normalized include statements and tried to insure that all duplicity includes were from the duplicity module. patch #6790: Add --exclude-if-present https://savannah.nongnu.org/patch/?6790 New in v0.5.13 (2009/03/26) --------------------------- Add more error detection to FTP backend. Fix backends so sleep does not occur after last retry. Fix so BackendException does not cause traceback except when verbosity is at level 5 or higher (Info level). Adjust log levels so some errors show up with default verbosity. Fixed bug where an extra comma caused a traceback during a warning about unnecessary sig files. Plus fixed print so the real filename would show up and not a Python object representation. Add Changelog.GNU to website and distribution to add a bit of detail showing the CVS changes via rcs2log. Added dist/mkGNUChangelog.sh. bug #22908: Don't block gpg-agent https://savannah.nongnu.org/bugs/?22908 To fix the above, --use-agent was added as a command line option. When this is specified and asymetric encryption is enabled, then all GnuPG passphrases will come from the gpg-agent or equivalent program and no passphrase prompt will be issued. bug #25787: Usernames with escaped @-sign are not handled properly https://savannah.nongnu.org/bugs/?25787 bug #25976: Password requested when not needed. https://savannah.nongnu.org/bugs/?25976 patch #6787: import duplicity.GnuPGInterface explicitly https://savannah.nongnu.org/patch/?6787 New in v0.5.12 (2009/03/15) --------------------------- bug #25838: Backup fails / ncftp - remote file already exists https://savannah.nongnu.org/bugs/?25838 With this fix we also get resume in ftp get/put. If a put or get fails part of the way through, ncftp will resume on the next retry. bug #25853: duplicity fails with boto passwords coming from ~/.boto https://savannah.nongnu.org/bugs/?25853 patch #6773: Make user name optional in rsync backend https://savannah.nongnu.org/patch/?6773 GPG errors will no longer cause tracebacks, but will produce a log entry, from gpg, similar to the following: ===== Begin GnuPG log ===== gpg: BAD0BAD0: skipped: public key not found gpg: [stdin]: encryption failed: public key not found ===== End GnuPG log ===== This will let the user know what really caused the GPG process to fail, and what really caused errors like 'broken pipe'. Add Epydoc output to web site and start adding documentation. http://duplicity.nongnu.org/epydoc/index.html New in v0.5.11 (2009/03/08) --------------------------- bug #25787: Usernames with @-sign are not handled properly https://savannah.nongnu.org/bugs/?25787 Bug #333057: GnuPGInterface prints exit statuses incorrectly https://bugs.launchpad.net/bugs/333057 bug #25696: ncftp error w/0.5.09 -- nested target directories https://savannah.nongnu.org/bugs/?25696 bug #15664: When restoring backup: "OverflowError: long int too large to convert to int" https://savannah.nongnu.org/bugs/?15664 patch #6761: More robust pexpect handling of SSH authentication https://savannah.nongnu.org/patch/?6761 patch #6762: Wrong exit() used for 2.3/2.4 Python https://savannah.nongnu.org/patch/?6762 New in v0.5.10 (2009/03/01) --------------------------- The default filename format has changed from W3 style to a long numeric style, YYYYMMDDTHHMMSSZ, with no delimiters, thus is now compatible with Windows/Samba filesystems. The time is UTC, not local, so there will be no timezone or daylight savings time issues. Duplicity still recognizes the old long filename format, and will continue incremental backup chains if found. The old format is still available via the --old-filenames option (pending deprecation). Users of --short-filenames or --time-separator should stop using these options on their next full backup. The new filenames are compatible with your system. The following options are pending deprecation and will be removed in a future release: --time-separator --short-filenames --old-filenames bug #19988: Incompatibility to Samba/SMB share https://savannah.nongnu.org/bugs/?19988 bug #25097: Allow listing files from any time, not just current time https://savannah.nongnu.org/bugs/?25097 bug #25550: Error codes do not propagate from log to exit status https://savannah.nongnu.org/bugs/?25550 bug #25308: Signatures orphaned if from another time zone https://savannah.nongnu.org/bugs/?25308 Bug #229826: duplicity crashed with ValueError in port() https://bugs.launchpad.net/duplicity/+bug/229826 New in v0.5.09 (2009/02/17) --------------------------- FTP is now driven with pexpect rather than NcFTP utilities. This closes the following bugs (and solves other problems): bug #24741: ncftpls -x '' causes failure on Yahoo FTP server bug #23516: duplicity/ncftpget not closing unlinked files, ... bug #25509: Logic error in imapbackend.py [IMAP_SERVER] https://savannah.nongnu.org/bugs/?25509 bug #25512: [Patch] Retry on Imap failure https://savannah.nongnu.org/bugs/?25512 bug #25530: commandline passwd not working https://savannah.nongnu.org/bugs/?25530 New in v0.5.08 (2009/02/02) --------------------------- Turns out going backwards in the license is not as easy as forwards. Restoring GPLv3 license until consensus reached. New in v0.5.07 (2009/01/31) --------------------------- bug #25293: IOError: [Errno 22] Invalid argument https://savannah.nongnu.org/bugs/?25293 bug #25379: sys.exit() causes traceback and should not https://savannah.nongnu.org/bugs/?25379 bug #25403: 0.5.06 "manifests not equal, different volume numbers" https://savannah.nongnu.org/bugs/?25403 patch #6729: New imap backend. Replaces current gmail backend https://savannah.nongnu.org/patch/?6729 patch #6730: Fix timing out for SSH backend https://savannah.nongnu.org/patch/?6730 patch #6733: Improve error handling in imapbackend.py https://savannah.nongnu.org/patch/?6733 Increase default volume size (--volsize) to 25M from 5M. This reduces the number of volumes to accomodate larger backups. Reworked patch 6701 to list collection one at a time rather than writing all as one huge list. Was causing memeory problems when the collections got large. Fix backendtest.py so that empty URL's in config.py cause the backend test to be skipped rather than erroring. Added notes in config.py.tmpl explaining the change. Add/update copyright statements in all distribution source files and revert duplicity to GPL version 2 license. Original fix to disallow use of ncftpput 3.2.0 mistyped the ErrorCode used and resulted in an error rather than an explanation. New in v0.5.06 (2009/01/09) --------------------------- Fix to deprecation warnings about sha and md5 modules. Uses hashlib if available, otherwise original module. Added loop to run-all-tests.sh to run all tests against all supported versions of Python if available. Looks for 2.3, 2.4, 2.5, 2.6. Noah Spurrier has given us permission to distribute pexpect.py along with duplicity, so this will no longer be an install requirement. NcFTP version 3.2.0 will not work with duplicity since we require the use of both -f and -C options on ncftpput. 3.1.9, 3.2.1+ work fine. I put in error checks for this situation in the FTP backend code. bug #25230: --include-globbing-filelist only including first entry. https://savannah.nongnu.org/bugs/?25230 bug #25239: Error during clean, wrong case in duplcicity https://savannah.nongnu.org/bugs/?25239 patch #6709: Report correct number of volumes when restoring https://savannah.nongnu.org/patch/?6709 sr #106583: document the need to use the --force option https://savannah.nongnu.org/support/?106583 New in v0.5.05 (2008/12/30) --------------------------- bug #25194: Duplicity 5.04 requires python-distutils-extra... https://savannah.nongnu.org/bugs/?25194 New in v0.5.04 (2008/12/27) --------------------------- patch #6678: Add progress metering https://savannah.nongnu.org/patch/?6678 patch #6686: Add error codes for all fatal errors https://savannah.nongnu.org/patch/?6686 bug #25090: Typos and trailing whitespace in duplicity manpage https://savannah.nongnu.org/bugs/?25090 bug #24889: NCFTP cannot deal with some FTP servers https://savannah.nongnu.org/bugs/?24889 patch #6692: Print collection status in a machine-readable way https://savannah.nongnu.org/patch/?6692 patch #6693: Some FatalError's don't have codes still https://savannah.nongnu.org/patch/?6693 patch #6694: Log exceptions https://savannah.nongnu.org/patch/?6694 patch #6695: Log filenames https://savannah.nongnu.org/patch/?6695 patch #6696: Consolidate get_delta_iter and get_delta_iter_w_sig https://savannah.nongnu.org/patch/?6696 patch #6697: Always log at least one progress during dry run https://savannah.nongnu.org/patch/?6697 patch #6700: Make duplicity translatable https://savannah.nongnu.org/patch/?6700 patch #6701: Make current-list command machine-readable https://savannah.nongnu.org/patch/?6701 patch #6702: handle unknown errnos in robust.py https://savannah.nongnu.org/patch/?6702 GPG was throwing "gpg: [don't know]: invalid packet (ctb=14)" and apparently this is non-fatal. There is a fix for this being rolled into GPG 2.x. http://lists.gnupg.org/pipermail/gnupg-devel/2006-September/023180.html Copied from collections.py. Fix supplied by Simon Blandford New in v0.5.03 (2008/11/17) --------------------------- bug #24731: Documentation error: "if... if" in remove-older-than paragraph https://savannah.nongnu.org/bugs/?24731 bug #24775: Digest Auth for WebDAV backend https://savannah.nongnu.org/bugs/?24775 patch #6676: Raw delta stats aren't right for multivolumes https://savannah.nongnu.org/patch/?6676 patch #6675: Add modelines https://savannah.nongnu.org/patch/?6675 patch #6674: Add --log-* options to man page https://savannah.nongnu.org/patch/?6674 patch #6673: Add --dry-run option https://savannah.nongnu.org/patch/?6673 patch #6672: makedist doesn't ship util.py https://savannah.nongnu.org/patch/?6672 patch #6670: Machine Readable Output https://savannah.nongnu.org/patch/?6670 patch #6662: improve s3 backend error reporting https://savannah.nongnu.org/patch/?6662 patch #6652: improve asynch scheduler (including the synchronous case) https://savannah.nongnu.org/patch/?6652 patch #6642: make ParsedUrl() thread-safe with respect to itself https://savannah.nongnu.org/patch/?6642 patch #6638: correct typo in reporting lack of sufficiently new boto backend https://savannah.nongnu.org/patch/?6638 sr #106496: put install-from-cvs-notes in CVS-README https://savannah.nongnu.org/support/?106496 sr #106534: GMail backups aren't stored in the correct location https://savannah.nongnu.org/support/?106534 New in v0.5.02 (2008/09/21) --------------------------- * Add -h option for help * Change gpg logging so that logs are always collected. The log is printed in the case of gpg IO errors. Also, verbosity level 5 or above (-v5) will print the logs. patch #6297: Add IMAP/s/gmail support https://savannah.nongnu.org/patch/?6297 bug #24260: backend.py missing re import https://savannah.nongnu.org/bugs/?24260 bug #24274: asyncscheduler.py missing sys import https://savannah.nongnu.org/bugs/?24274 New in v0.5.01 (2008/09/11) --------------------------- bug #24234: Tabs Present In Source Files https://savannah.nongnu.org/bugs/?24234 bug #24223: WebDAV backend broken in 0.5.00 https://savannah.nongnu.org/bugs/?24223 bug #24226: WebDAV Does Not Create Collection If Needed https://savannah.nongnu.org/bugs/?24226 New in v0.5.00 (2008/09/06) --------------------------- Changes to unit tests: - resolve circular imports after backend reorg - resolve exception error import - now in errors.py - remove need for temp2.tar to be in CVS repository bug #23988: scp destination fails if no username is specified https://savannah.nongnu.org/bugs/?23988 bug #23985: --no-encryption option does not work in 0.4.12 https://savannah.nongnu.org/bugs/?23985 patch #6623: slightly augment tempdir cleanup logging https://savannah.nongnu.org/patch/?6623 patch #6596: re-organize backend module structure https://savannah.nongnu.org/patch/?6596 patch #6589: S3 european bucket support https://savannah.nongnu.org/patch/?6589 patch #6353: Concurrency for volume encryption and upload. https://savannah.nongnu.org/patch/?6353 New in v0.4.12 (2008/07/22) --------------------------- Dan Muresan created a patch to minimize the number of password prompts. To do so, it sometimes requests a password once without confirmation; if later it turns out that a full backup is needed, the user is prompted for confirmation. bug #23540: doc bug in man page (environment FTP_PASSWORD) https://savannah.nongnu.org/bugs/?23540 bug #23362: Documentation for --version, --time-separator https://savannah.nongnu.org/bugs/?23362 bug #23283: interactive passphrase query is suboptimal https://savannah.nongnu.org/bugs/?23283 bug #23066 was not actually applied to 0.4.11. Its here now. https://savannah.nongnu.org/bugs/?23066 bug #22826: regressions caused by boto 1.1c https://savannah.nongnu.org/bugs/?22826 New in v0.4.11 (2008/05/05) --------------------------- Changes applied to allow duplicity to run under Python 2.3 again. patch #6485: Reinstate patch #6340 with a detailed explanation. https://savannah.nongnu.org/patch/?6485 bug #23066: ssh uris with given portnumbers are not handled correctly https://savannah.nongnu.org/bugs/?23066 New in v0.4.10 (2008/03/27) --------------------------- bug #22728: FTP backend fails on empty directory https://savannah.nongnu.org/bugs/?22728 patch #6374: Duplicity --tempdir patch documentation. https://savannah.nongnu.org/patch/?6374 patch #6375: Duplicity reports the epoch for a nonexistant last full backup date https://savannah.nongnu.org/patch/?6375 patch #6380: add additional named logging levels https://savannah.nongnu.org/patch/?6380 patch #6389: Possible Fix for pagefile.sys on Win32 systems https://savannah.nongnu.org/patch/?6389 patch #6403: Restore by overwriting files/directories by using --force option https://savannah.nongnu.org/patch/?6403 patch #6449: add additional debug level logging https://savannah.nongnu.org/patch/?6449 patch #6453: handle absolute urls in webdav backend https://savannah.nongnu.org/patch/?6453 Fix problem where S3 prefix was prepended with 'd'. This caused a failure in the regression tests. New in v0.4.9 (2008/01/04) -------------------------- NOTE: URL format correction in rsync://. The rsync backend now properly supports absolute and relative pathnames and module access. The formats are: rsync://user@host::/module/some_dir rsync://user@host/relative_path rsync://user@host//absolute_path Fixed regression caused by changeover to new urlparse.py. bug #21475: FTP Usernames that contain '@' are not recognized https://savannah.nongnu.org/bugs/?21475 Added section URL FORMAT in the duplicity man page. Added 2nd patch to bug #21475 that forces all versions of Python to use the fixed urlparse.py. Fixed so that remove-older-than and remove-all-but-n-full will not request a GPG passphrase. Fixed issue with Pure-FTPd that would always return an empty directory listing and thus force a full backup every time. A side effect of the change is that we now only make one call to ncftpls to get the listing, thereby reducing the overhead on systems with a large number of backup files. bug #21896: Two problems with rsync under 0.4.8 + patch https://savannah.nongnu.org/bugs/?21896 bug #21909: Problematic typo in compare_verbose() method https://savannah.nongnu.org/bugs/?21909 patch #6354: S3 staight typo results in a bogus exception https://savannah.nongnu.org/patch/?6354 patch #6356: Command line option for the temporary directory root. https://savannah.nongnu.org/patch/?6356 patch #6357: Explicit restore action is missing from the command list, https://savannah.nongnu.org/patch/?6357 New in v0.4.8 (2007/12/15) -------------------------- First pass at bringing unittest cases up to date. All unit tests are working, but more test cases need to be added to handle the new protocols, plus there is some print leakage even with logging turned off. Allow pexpect to force the close of the child on sftp calls. We already do that with scp calls. This cleans up that exception. bug #21751: rsync module urls do not work in 0.4.7 https://savannah.nongnu.org/bugs/?21751 bug #21752: Boto backend needs version 0.9d or later https://savannah.nongnu.org/bugs/?21752 patch #6340: S3 short filename regression https://savannah.nongnu.org/patch/?6340 patch #6344: S3 bad bad key key handling http://savannah.nongnu.org/patch/?6344 New in v0.4.7 (2007/12/07) -------------------------- Applied patch from Eric Hanchrow to fix logging error in botoBackend, and fix delete() in rsyncBackend. bug #21673: remove-all-but-n-full wrong arg usage https://savannah.nongnu.org/bugs/?21673 bug #21686: NcFTPGet 3.2.0 tempfile incompatibility https://savannah.nongnu.org/bugs/?21686 patch #6292: Amazon S3 bucket creation deferral https://savannah.nongnu.org/patch/?6292 patch #6293: left-over patch from remove-all-but-n-full https://savannah.nongnu.org/patch/?6293 patch #6296: Generic S3 url support for Duplicity 0.4.6 https://savannah.nongnu.org/patch/?6296 patch #6298: URI unquoting patch for FTP backend https://savannah.nongnu.org/patch/?6298 patch #6299: re-design tempfile handling https://savannah.nongnu.org/patch/?6299 patch #6300: Standard library replacement for ParsedUrl class https://savannah.nongnu.org/patch/?6300 patch #6301: log sftp commands at verbosity 5 https://savannah.nongnu.org/patch/?6301 New in v0.4.6 (2007/11/28) -------------------------- https://savannah.nongnu.org/bugs/?21508 bug #21508: Change delete implementation of ftpBackend to only send one "DELE" instead of multiple per delete. https://savannah.nongnu.org/bugs/?21646 bug #21646: --archive-dir causes delete of remote full sigs and orphaned sig files https://savannah.nongnu.org/bugs/?21651 bug #21651, add https support for webdav. https://savannah.nongnu.org/bugs/?21657 bug #21657: ncftpls fails to create dir in ver 0.4.5 https://savannah.nongnu.org/patch/?6284 patch #6284: document TMPDIR and friends https://savannah.nongnu.org/patch/?6284 patch #6285: security fix: eliminate use of mktemp() https://savannah.nongnu.org/patch/?6289 patch #6289: Amazon S3 key prefix patch for Duplicity 0.4.5 https://savannah.nongnu.org/patch/?6291 patch #6291: Alternative WebDAV HTTPS patch New in v0.4.5 (2007/11/26) -------------------------- https://savannah.nongnu.org/bugs/?21646 Fix to handling of collections when --archive-dir is used. Prior to this, duplicity would write the full sig files to both local and remote, then delete the remote. Now, it does not delete the remote full sigs. Applied the following patches from Peter Schuller patch #6279, add command 'remove-all-but-n-full' patch #6280, clarify --archive-dir option patch #6281, --help should print to stdout, not stderr patch #6282, collection-status: output in more consistent order New in v0.4.4 (2007/11/23) -------------------------- All the changes in RC1 through RC4 plus: Changes to ftpBackend to use a temp login config file rather than putting the username and password on the command line. This requires the use of NcFTP 3.1.9 or later. Thanks to a patch from Greg Hewgill the Amazon S3 backend now uses --num-retries to retry IO repeatedly if needed. Changes to commandline processing to allow non-ambiguous short strings for commands, i.e. 'i', 'inc', 'incr' for 'incremental', 'f' for 'full', etc.. A warning message is printed if the short command is not unique. Note: this already works for options, so I just applied the same idea to commands. Applied a patch from Gregory Hartman to correct handling of DST in time calculations. This affects backups made the night of a DST time switch. New in v0.4.4.RC4 (2007/10/26) ------------------------------ WARNING: COMMAND LINE CHANGES ARE NOT BACKWARDS COMPATIBLE! There is a new command line syntax to separate actions and options. Refer to the new man page for full details of the change. The new syntax looks like: duplicity [full|incr] [options] source_dir target_url duplicity [restore] [options] source_url target_dir duplicity verify [options] source_url target_dir duplicity collection-status [options] target_url duplicity list-current-files [options] target_url duplicity cleanup [options] target_url duplicity remove-older-than time [options] target_url Fixed issue in --time-separator where the current time string was being set prior to setting the separator, causing errors when trying to set the --time-separator for Windows systems. Fix so that file mtime is always compared in full seconds. Fix so that ftpBackend.delete() does not print file list. New in v0.4.4.RC3 (2007/10/02) ------------------------------ Patch from Olivier Croquette to add --full-if-older-than=