Duplicity 0.8.00

Milestone information

Project:
Duplicity
Series:
0.8
Version:
0.8.00
Released:
 
Registrant:
Kenneth Loafman
Release registered:
Active:
No. Drivers cannot target bugs and blueprints to this milestone.  

Download RDF metadata

Activities

Assigned to you:
No blueprints or bugs assigned to you.
Assignees:
1 Aaron Whitehouse
Blueprints:
1 Implemented
Bugs:
17 Fix Released

Download files for this release

After you've downloaded a file, you can verify its authenticity using its MD5 sum or signature. (How do I verify a download?)

File Description Downloads
download icon duplicity-0.8.00.tar.gz (md5, sig) duplicity tarball 574
last downloaded 2 weeks ago
Total downloads: 574

Release notes 

New in v0.8.00 (2019/05/29)
---------------------------
* Merged in lp:~aaron-whitehouse/duplicity/remove-python26
  - Remove Python 2.6 support references and tests.
* Fixed bug #1600692 with patch from Wolfgang Rohdewald
  - Allow symlink to have optional trailing slash during verify.
* Merged in lp:~aaron-whitehouse/duplicity/07-fix_deja_dup_error_on_locked_files
  - Revert log.Error to log.Warn, as it was prior to the merge in rev 1224,
    as this was affecting other applications (e.g. deja dup; Bug #1605939).
* Merged in lp:~mwilck/duplicity/duplicity
  - Speedup of path_matches_glob() by about 8x. See
    https://code.launchpad.net/~mwilck/duplicity/duplicity/+merge/301268
    for more details.
* Fixed conflict in merge from Martin Wilck and applied
  - https://code.launchpad.net/~mwilck/duplicity/0.7-series/+merge/301492
  - merge fixes setsid usage in functional testing.
* Fixed bug #1612472 with patch from David Cuthbert
  - Restore from S3 fails with --with-prefix-archive if prefix includes '/'
* Merged in lp:~arashad.ahamad/duplicity/duplicity_latest
  - Changes for connecting to IBM Bluemix ObjectStorage. See man page.
* Merged in lp:~fenisilius/duplicity/acd_init_mkdir
  - Allow duplicity to create remote folder
* Fixed bugs #815510 and #1615480
  - Changed default --volsize to 200MB
* Merged in lp:~mstoll-de/duplicity/duplicity
  - Backblaze announced a new domain for the b2 api
* Fixed bug #1623342 with patch from Daniel Jakots
  - failing test on OpenBSD because tar/gtar not found
* Merged in lp:~mwilck/duplicity/duplicity
  - GPG: enable truly non-interactive operation with gpg2
  - This patch fixes the IMO unexpected behavior that, when using GnuPG2, a pass phrase dialog always pops up for
    saving backups. This is particularly annoying when trying to do unattended / fully automatic backups.
* Fixed bug #1621194 with code from Tornhoof
  - Do backup to google drive working without a service account
* Merged in lp:~havard/duplicity/jottacloudbackend
  - Adds support for a new backend, jottacloud.com, using the scheme `jottacloud:/<folder>`.
  - Reverse-engineered library, `jottalib`: http://github.com/havardgulldahl/jottalib
  - Here's how you set up jottalib https://github.com/havardgulldahl/jottalib/wiki
* Merged in lp:~breunigs/duplicity/amazondrive
  - Provide a native backend for AmazonDrive
* Merged in lp:~breunigs/duplicity/amazondrive2
  - Fixed variable renaming issue
* Fixed bug #1642098 - does not create PAR2 archives when '--par2-options' is used
  - Missing space between par2-options plus default options
* Fix bug using 40-char sign keys, from Richard McGraw on mail list
  - Remove truncation of argument and adjust comments
* Merged in lp:~dernils/duplicity/robust-dropbox-backend
  - Added new command line option --backend-retry-delay
    that allows to determine the time that duplicity sleeps
    before retrying after an error has occured.
  - Added some robustness to dpbxbackend.py that ensures re-authentication
    happens in case that a socket is changed (e.g. due to a forced reconnect
    of a dynamic internet connection).
* Merged in lp:~ed.so/duplicity/manpage.fixes
  - Fix html output via rman on the website
* Merged in lp:~horgh/duplicity/copy-symlink-targets-721599
  - Add --copy-links to copy symlink contents, not just the link itself.
* Merged in lp:~aaron-whitehouse/duplicity/Bug_1624725_files_within_folder_slash
  - Fixed Bug #1624725, so that an include glob ending in "/" now includes folder contents (for globs with
    and without special characters). This preserves the behaviour that an expression ending in "/" only
    matches a folder, but now the contents of any matching folder is included.
* Fix some issues with testing on MacOS
* Fix problem with gpg2 in yakety and zesty
* Fix Bug #1642813 with patch from Ravi
  - If stat() returns None, don't attempt to set perms.
* Merged in lp:~breunigs/duplicity/amazondrive3
  - As reported on the mailinglist, if a space is entered while duplicity asks for the URL, it fails.
    Since all important spaces are URL encoded anyway, this should be fine even if there are spaces in
    the URL at all. I also patched it in the onedrive backend, because it must have similar issues.
* Fixed bug #1623342 with patch supplied by Daniel Jakots
  - Failing test on OpenBSD because tar/gtar not found
* Fixed bug #1654220 with patch supplied by Kenneth Newwood
  - Duplicity fails on MacOS because GPG version parsing fails
* Merged in lp:~aaron-whitehouse/duplicity/0-8-merge_selection_tests
  - Merge in TestExcludeIfPresent from 0.7-series, which tests the behaviour of
    duplicity's --exclude-if-present option.
  - Move and rename TestTrailingSlash2 test (was duplicate name) as in 0.7-series.
  - Fix PEP error on adbackend.py.
  - Add jottalib as a tox dep to fix pylint error.
  - Remove unnecessary skipUnless Linux as per 0.7-series.
* Fixed bug #1655268 "--gpg-binary option not working"
  - If gpg binary is specified rebuild gpg profile using new binary location
* Merged in lp:~matthew-t-bentley/duplicity/duplicity
  - Sets a user agent. Backblaze asked for this in case there are errors that originate
    from the Duplicity B2 backend
  - Only retrieves a new upload URL when the current one expires, to bring it in line
    with their best practices for integrations: https://www.backblaze.com/b2/docs/integration_checklist.html
* Merged in lp:~aaron-whitehouse/duplicity/08-merge-glob-parsers
  - Use a single code path for glob strings whether or not these contain special
    characters/wildcards (glob_get_normal_sf) and remove glob_get_filename_sf and glob_get_tuple_sf.
  - Remove run-tests-ve as this was identical to run-tests.
* Add detail about import exceptions in onedrivebackend.py
* Merged in lp:~aaron-whitehouse/duplicity/08-refactor-unit-test-globmatch
  - Rename path_matches_glob_fn to select_fn_from_glob, as this more accurately reflects the return value.
  - Significantly refactored unit/test_globmatch.py to make this cleaner and clearer.
* Fixed bug #1657916 with patch supplied by Daniel Harvey
  - B2 provider cannot handle two backups in the same bucket
* Fixed bug #1603704 with patch supplied by Maciej Bliziński
  - Crash with UnicodeEncodeError
* Merged in lp:~aaron-whitehouse/duplicity/08-python-futurize-stage-1
  - Made many of the safer changes for improved Python 3 support (python-future's futurize -stage1)
    without functional change to the code (and leaving the isinstance(s, types.StringType) tests unchanged).
  - Created Python 2/3 compatible tests for int and long.
  - Update setup.py to show only Python 2.7 support.
* Merged in lp:~marix/duplicity/azure-storage-0.30.0-plus
  - This makes the Azure backend compatible with version 0.30.0 and up of the
    underlying azure-storage package.
* Merged in lp:~marix/duplicity/azure-storage-sas
  - This branch adds support for Shared Access Signature to the Azure backend
    which allows to run Duplicity with a minimal set of permissions.
* Merged in lp:~aaron-whitehouse/duplicity/pep8_test_fixes
  - Fix PEP-8 testing by moving to using pycodestyle library.
  - Temporarily add ignores to allow these tests to pass.
  - Fix E305 PEP8 errors: expected 2 blank lines after class or function definition, found 1.
* Merged in lp:~benoit.bertholon/duplicity/duplicity
  - Fixes bug #1666194 - ProcessCommandLine function called twice fail and arglist argument not used
* Fixed variable name change in last merge which broke a bunch of tests
  - Changed archive_dir_root back to archive_dir
* Fixed bug #1367675 - IMAP Backend does not work with Yahoo server
  - added the split() as needed in 'nums=list[0].strip().split(" ")'
  - the other fixes mentioned in the bug report comments were already done
* Merged in lp:~benoit.bertholon/duplicity/duplicity
  - Use the globals.archive_dir variable to store only a string
    in the case of a path, uses globals.archive_dir_path
* Merged in p:~aaron-whitehouse/duplicity/pep8_E402_fixes
  - Fixed PEP8 errors: E402 module level import not at top of file
* Fixed bug #1671852 - Code regression caused by revision 1108
  - change util.uexc() back to bare uexc()
* Fixed bug #1668750 - Don't mask backend errors
  - added exception prints to module import errors
* Fixed bug #1680682 with patch supplied from Dave Allan
  - Only specify --pinentry-mode=loopback when --use-agent is not specified
* Fixed man page that had 'cancel' instead of 'loopback' for pinentry mode
* Fixed bug #1684312 with suggestion from Wade Rossman
  - Use shutil.copyfile instead of os.system('cp ...')
  - Should reduce overhead of os.system() memory usage.
* Merged in lp:~dernils/duplicity/testing
  - Fixed minor stuff in requirements.txt.
  - Added a Dockerfile for testing.
  - Minor changes to README files.
  - Added README-TESTING with some information on testing.
* Merged in lp:~dernils/duplicity/documentation
  - Minor changes to README-REPO, README-TESTING
  - Also redo the changes to requirements.txt and Dockerfile
* Merged in lp:~dawgfoto/duplicity/replicate
  - Add replicate command to replicate a backup (or backup
    sets older than a given time) to another backend, leveraging
    duplicity's backend and compression/encryption infrastructure.
* Fixed some incoming PyLint and PEP-8 errors.
* Merged in lp:~marix/duplicity/add-azure-arguments
  - Using the Azure backend to store large amounts of data we found that
    performance is sub-optimal. The changes on this branch add command line
    parameters to fine-tune some parameters of the Azure storage library,
    allowing to push write performance towards Azure above 1 Gb/s for large
    back-ups. If a user does not provide the parameters the defaults of the
    Azure storage library will continue to be used.
* Replace incoming non-ASCII chars in commandline.py
* bzr does not honor perms so fix the perms at the start of the testing and
  avoid annoying error regarding testing/gnupg having too lenient perms
* Merged in lp:~dernils/duplicity/DockerfileConvenience
  - Added a few tools to the Dockerfile that make life easier
* Fixed bug #1320832 with suggestion from Oskar Wycislak
  - Use chunks instead of reading it all in swiftbackend
* Merged in lp:~dernils/duplicity/DockerfileConvenience
  - Add a few files that are the beginning of further infrastructure based
    on docker. It contains a Dockerfile for a simple ftp server (used for
    backend testing) and a setup script that can be used to set up the
    complete test environment.
* Moved Dockerfile for duplicitytest into testinfrastructure/duplicity_test
* Moved some things around in testing/infrastructure to clean up
* Fixed bug #1689632 with patch from Howard Kaye
  - On MacOS, the tempfile.TemporaryFile call erroneously raises an
    IOError exception saying that too many files are open. This causes
    restores to fail randomly, after thousands of files have been restored.
* Fixed bug #1320641 and others regarding lockfile
  - swap from lockfile to fasteners module
  - use an fcntl() style lock for process lock of duplicity cache
  - lockfile will now clear if duplicity is killed or crashes
* Merged in lp:~aaron-whitehouse/duplicity/tox_pylint_fixes
  - Changes needed to run-tests without pylint E0401(import-error) errors
* Merged in lp:~xlucas/duplicity/swift-storage-policies
  - This brings support for Swift storage policies: when using a Swift
    backend, you can specify the policy containers should be operating on.
  - This is similar to AWS Cloud Storage classes (ia, rrs, glacier and so on).
* Merged in lp:~dernils/duplicity/Dockerfile
  - Added another backend to the docker test infrastructure, updated the setup
    for testing and updated the documentation.
* Merged in lp:~dernils/duplicity/Dockerfile
  - Now have subnet name and IP of the subnet for testing as a variable.
* May have finally fixed bug #1556553, "Too many open files...".
  - Applied patch from Howard Kaye, question #631423. The fix is to dup
    the file descriptor, and then close the file in the deallocator
    routine in the glue code. Duping the file lets the C code and the Python
    code each close the file when they are done with it.
  - Invalidated and removed the fix put in for bug #1320832.
  - Caveat: long incremental chains will still eat up a large number of file
    descriptors. It's a very risky practice, so I'm not inclined to fix it.
* Revisited bug #670891 with patch from Edgar Soldin
  - Forced librsync.PatchedFile() to extract file object from TemporaryFile()
    object when on Windows or Cygwin systems. This allows us to avoid the
    problem of tmpfile() use which creates temp files in the wrong place.
  - See discussion at https://bugs.launchpad.net/duplicity/+bug/670891
* Fix bug #1672540 with patch from Benoit Nadeau
  - Rename would fail to move par files when moving across filesystems.
  - Patch uses shutil.move() to do the rename instead.
* Merged in lp:~dernils/duplicity/docker-compose
  - Test Infrastructure now utilizing docker-compose
* Merged in lp:~aaron-whitehouse/duplicity/08-fix-man-verify
  - Fix description of --verify and --compare-data in the man page. Now
    clarifies that verify compares the restored files to hashes stored at
    backup date, while --compare-data compares restored files to files
    in target_path.
* Fixed bug #1265765 with patches from Matthias Larisch and Edgar Soldin
  - SSH Paramiko backend now uses BufferedFile implementation to enable
    collecting the entire list of files on the backend.
* Copy.com is gone so remove copycombackend.py.
* Merged in lp:~xlucas/duplicity/swift-multibackend-bug
  - Fix a bug when swift backend is used in a multibackend configuration.
* Fixed problem in dist/makedist when building on Mac where AppleDouble
  files were being created in the tarball. See:
  https://superuser.com/questions/61185/why-do-i-get-files-like-foo-in-my-tarball-on-os-x
* Merged in lp:~dawgfoto/duplicity/replicate
  - Add integration test for newly added replicate command.
  - Also see https://code.launchpad.net/~dawgfoto/duplicity/replicate/+merge/322836.
* Merged in lp:~xlucas/duplicity/multibackend-prefix-affinity
  - Support prefix affinity in multibackend.
* Merged in lp:~xlucas/duplicity/pca-backend
  - Add support for OVH Public Cloud Archive backend.
* Fixed PEP8 and 2to3 issues.
* Patched in lp:~dawgfoto/duplicity/skip_sync_collection_status
  - collection-status should not sync metadata
  - up-to-date local metadata is not needed as collection-status is
    generated from remote file list
  - syncing metadata might require to download several GBs
* Fixed slowness in 'collection-status' by basing the status on the
  remote system only. The local cache is treated as empty.
* Fixed encrypted remote manifest handling to merely put out a non-fatal
  error message and continue if the private key is not available.
* Merged in lp:~mterry/duplicity/giobackend-display-name
  - giobackend: handle a wider variety of gio backends by making less assumptions;
    in particular, this fixes the google-drive: backend
* Fixed bug #1709047 with suggestion from Gary Hasson
  - fixed so default was to use original filename
* Fixed PEP8 errors in bin/duplicity
* Merged in lp:~mterry/duplicity/gio_child_for_display_name
  - gio: be slightly more correct and get child GFiles based on display name
* Fixed bug #1711905 with suggestion from Schneider
  - log.Warn was invoked with log.warn in webdavbackend.py
* Merged in lp:~mterry/duplicity/gpg-tag-versions
  - Support gpg versions numbers that have tags on them.
  - This can happen if you build gpg from git trunk (e.g. 2.1.15-beta20). Or if you run
    against the freedesktop flatpak runtime (e.g. 2.1.14-unknown).
* Fixed bug #1394386 with new module megabackend.py from Tomas Vondra
  - uses megatools from https://megatools.megous.com/ instead of mega.py library
    which has been deprecated
  - fixed copyright and PEP8 issues
  - replaced subprocess.call() with self.subprocess_popen() to standardize
* Fixed bug #1538333 Assertion error in manifest.py: assert filecount == ...
  - Made sure to never pass .part files as true manifest files
  - Changed assert to log.Error to warn about truncated/corrupt filelist
  - Added unit test to make sure detection works
  - Note: while this condition is serious, it will not affect the basic backup and restore
    functions. Interactive options like --list-files-changed and --file-changed will not
    work correctly for this backup set, so it is advised to run a full backup as soon as
    possible after this error occurs.
* Fixed bug #1638033 Remove leading slash on --file-to-restore
  - code already used rstrip('/') so change to just strip('/')
* Fixed bug introduced in new megabackend.py where process_commandline()
  takes a string not a list. Now it takes both.
* Updated web page for new megabackend requirements.
* Merged in lp:~mterry/duplicity/more-decode-issues
  - Here's some fixes for another couple UnicodeDecodeErrors.
  - The duplicity/dup_time.py fixes when a user passes a utf8 date string (or a string with bogus
    utf8 characters, but they have to really try to do that). This is bug 1334436.
  - The bin/duplicity change from str(e) to util.uexc(e) fixes bug 1324188.
  - The rest of the changes (util.exception_traceback and bin/duplicity changes to use it) are to
    make the printing of exceptions prettier. Without this, if you see a French exception, you see
    "accept\xe9es" instead of "acceptées".
  - You can test all of these changes in one simple line:
    $ LANGUAGE=fr duplicity remove-older-than $'accept\xffées'
* Fix backend.py to allow string, list, and tuple types to support megabackend.py.
* Fixed bug #1715650 with patch from Mattheww S
  - Fix to make duplicity attempt a get first, then create, a container
    in order to support container ACLs.
* Fixed bug #1714663 "Volume signed by XXXXXXXXXXXXXXXX, not XXXXXXXX"
  - Normalized comparison length to min length of compared keys before comparison
  - Avoids comparing mix of short, long, or fingerprint size keys.
* Patched in lp:~mterry/duplicity/rename-dep
  - Make rename command a dependency for LP build
* Fixed bug #1654756 with new b2backend.py module from Vincent Rouille
  - Faster (big files are uploaded in chunks)
  - Added upload progress reporting support
* Fixed bug #1448094 with patch from Wolfgang Rohdewald
  - Don't log incremental deletes for chains that have no incrementals
* Fixed bug #1724144 "--gpg-options unused with some commands"
  - Add --gpg-options to get version run command
* Fixed bug #1720159 - Cannot allocate memory with large manifest file since 0.7.03
  - filelist is not read if --file-changed option in collection-status not present
  - This will keep memory usage lower in non collection-status operations
* Fixed bug #1723890 with patch from Killian Lackhove
  - Fixes error handling in pydrivebackend.py
* Fixed bug #1730902 GPG Error Handling
  - use util.ufn() not str() to handle encoding
* Fixed bug #1733057 AttributeError: 'GPGError' object has no attribute 'decode'
  - Replaced call to util.ufn() with call to util.uexc(). Stupid typo!
* More fixes for Unicode handling
  - Default to 'utf-8' if sys.getfilesystemencoding() returns 'ascii' or None
  - Fixed bug #1386373 with suggestion from Eugene Morozov
* Merged in lp:~crosser/duplicity/fix-oauth-flow
  - Fixed bug #1638236 "BackendException with oauth2client 4.0.0"
* Merged in lp:~crosser/duplicity/dpbx-fix-file-listing
  - Fixed bug #1639664 "Dropbox support needs to be updated for Dropbox SDK v7.1"
* Merged in lp:~crosser/duplicity/fix-small-file-upload
  - Fixed small file upload changes made in Dropbox SDK v7.1
* Converted to use pytest instead of unittest (setup.py test is now discouraged)
  - We use @pytest.mark.nocapture to mark the tests (gpg) that require
    no capture of file streams (currently 10 tests).
  - The rest of the tests are run normally
* More pytest changes
  - Use requirements.txt for dependencies
  - Run unit tests first, then functional
  - Some general cleanup
* Merged in lp:~aaron-whitehouse/duplicity/08-ufn-to-uc_name
  - Replace util.ufn(path.name) with path.uc_name throughout.
* Merged in lp:~aaron-whitehouse/duplicity/08-ufn-to-fsdecode
  - Change util.fsdecode to use "replace" instead of "ignore" (matching behaviour of util.ufn)
  - Replace all uses of ufn with fsdecode
  - Make backend.tobytes use util.fsencode rather than reimplementing
* Reduce dependencies on backend libraries
  - Moved backend imports into backend class __init__ method
  - Surrounded imports with try/except to allow better errors
  - Put all library dependencies in requirements.txt
* Merged in lp:~dawgfoto/duplicity/fixup1251
  - Avoid redundant replication of already present backup sets.
  - Fixed by adding back BackupSet.__eq__ which was accidentally(?) removed in 1251.
* Merged in lp:~dawgfoto/duplicity/fixup1252
  * only check decryptable remote manifests
    - fixup of revision 1252 which introduces a non-fatal error message (see #1729796)
    - for backups the GPG private key and/or it's password are typically not available
    - also avoid interactive password queries through e.g. gpg agent
* Fixed bug #1768954 with patch from Max Hallden
  - Add AZURE_ENDPOINT_SUFFIX environ variable to allow setting to non-U.S. servers
* Fixed bug #x1717935 with suggestion from strainu
  - Use urllib.quote_plus() to properly quote pathnames passed via URL
* Merged in lp:~aaron-whitehouse/duplicity/08-pycodestyle
  - Tox changes to accommodate new pycodestyle version warnings.
    Ignored W504 for now and marked as a TODO.
    Marked W503 as a permanent ignore, as it is prefered to the (mutually exclusive) W504 under PEP8.
  - Marked various regex strings as raw strings to avoid the new W605 "invalid escape sequence".
* Merged in lp:~aaron-whitehouse/duplicity/08-unadorned-strings
  - Added new script to find unadorned strings (testing/find_unadorned_strings.py python_file)
    which prints all unadorned strings in a .py file.
  - Added a new test to test_code.py that checks across all files for unadorned strings and gives
    an error if any are found (most files are in an ignore list at this stage, but this will allow
    us to incrementally remove the exceptions as we adorn the strings in each file).
  - Adorn string literals in test_code.py with u/b
* Fixed bug #1780617 Test fail when GnuPG >= 2.2.8
  - Relevant change in GnuPG 2.2.8: https://dev.gnupg.org/T3981
  - Added '--ignore-mdc-error' to all gpg calls made.
* Merged in lp:~aaron-whitehouse/duplicity/08-adorn-strings
  - Adorning string literals (normally to make these unicode), in support of a transition to Python 3.
    See https://blueprints.launchpad.net/duplicity/+spec/adorn-string-literals
  - Adorn string in duplicity/globmatch.py.
  - Adorn strings in testing/unit/test_globmatch.py
  - Adorn strings in selection.py
  - Adorn strings in functional/test_selection.py and unit/test_selection.py
  - Remove ignores for these files in test_code.py
* Added function to fix unadorned strings (testing/fix_unadorned_strings.py)
  - Fixes by inserting 'u' before token string
  - Solves 99.9% of the use cases we have
  - Fix unadorned strings to unicode in bin/duplicity and bin/rdiffdir
  - Add import for __future__.print_function to find_unadorned_strings.py
* Fixed unadorned strings to unicode in duplicity/backends/*
  - Some fixup due to shifting indentataion not matching PEP8.
* Reverted back to rev 1317 and reimplemented revs 1319 to 1322
* Adorned strings in testing/, testing/functional/, and testing/unit
* Added AUTHORS file listing all copyright claimants in headers
* Merged in lp:~mgorse/duplicity/0.8-series
  - Adorn some duplicity/*.py strings. I've avoided submitting anything that I think might require
    significant discussion; I think that reviewing will be easier this way. Mostly annotated strings
    as unicode, except for librsync.py.
* Merged in lp:~qsantos/duplicity/fix-unmatched-rule-error
  - There are actually two commits: the first fixes a very minor detail in the README regarding the
    Python version that should be used; the second fixes the way exceptions are handled when an
    incorrect rule is specified, and display the nice error message rather than an obscure stack trace.
* Merged in lp:~mgorse/duplicity/0.8-series
  - Adorn some remaining strings
* Merged in lp:~mgorse/duplicity/0.8-series
  - Run futurize --stage1, and adjust so that tests still pass.
* Fixed but #1797797 with patch from Bas Hulsken
  - use bytes instead of unicode for '/' in filenames
* Merged in lp:~mcuelenaere/duplicity/duplicity
  - Make sure we don't load files completely into memory when transferring them from/to
    the remote WebDAV endpoint.
* Fixed bug #1798206 and bug #1798504
  - Made paramiko a global with import during __init__ so it would
    not be loaded unless needed.
* Merged in lp:~mgorse/duplicity/0.8-series
  - First pass at a python 3 port.
* Fixed bug #1803896 with patch from slawekbunka
  - Add __enter__ and __exit__ to B2ProgressListener
* Merged in lp:~okrasz/duplicity/duplicity
  - Add --azure-blob-tier that specifies storage tier
    (Hot,Cool,Archive) used for uploaded files.
* Merged in lp:~vam9/duplicity/0.8-series-s3-kms-support
  - Added s3 kms server side encryption support with kms-grants support.
* Merged in lp:~mgorse/duplicity/0.8-series
  - More python 3 fixes
* Merged in lp:~aaron-whitehouse/duplicity/08-uexc-fix
  - Fix for Bug #1770929 with associated test cases (thanks to Pete Zaitcev (zaitcev)
    in Bug #1797928 for the head start).
* Merged in lp:~aaron-whitehouse/duplicity/08-style-fixes
  - Fix pylint style issues (over-indented text, whitespace on blank lines etc)
  - Removed "pylint: disable=bad-string-format-type" comment, which was throwing
    an error and does not seem to be needed.
* Removed last mention of copy.com from man page with help from edso.
* Fix bug #1811114 with revised onedrivebackend.py from David Martin
  - Adapt to new Microsoft Graph API
* Merged in lp:~brandon753-ba/duplicity/aws-glacier
  - Adds support for for a command line option to store data on AWS S3 Glacier.
* Manual merge of lp:~yajo/duplicity/duplicity
  - Support partial metadata sync.
  - Fixes bug #1823858 by letting the user to choose partial syncing. Only the metadata for the target chain
    will be downloaded. If older (or newer) chains are encrypted with a different passphrase, the user will
    be able to restore to a given time by supplying only the passphrase for the chain selected by
    the `--restore-time` option when using this new option.
  - A side effect is that using this flag reduces dramatically the sync time when moving files from one to
    another location, in cases where big amounts of chains are found.
* Merged in lp:~mgorse/duplicity/0.8-series
  - Python 3 fixes to imapbackend.py
  - Fix bug 1828869: refresh CollectionsStatus after sync
* Fixed bug #1828662 with patch from Bas Hulsken
  - string.split() had been deprecated in 2, removed in 3.7
* Some more work on unadorned strings
  - Fixed test_unadorned_string_literals to list all strings found
  - Added bin/duplicity and bin/rdiffdir to list of files tested
  - All unadorned strings have now been adorned
* Fix TestGlobToRegex.test_glob_to_regex for py3.6 and above
  - see https://bugs.python.org/issue29995 for details
* Merged in lp:~stragerneds/duplicity/duplicity
  - improve test backup speed
  - insure all test output is read

Changelog 

View the full changelog

2019-05-29 Kenneth Loafman <email address hidden>

    * Merged in lp:~stragerneds/duplicity/duplicity
      - improve test backup speed
      - insure all test output is read
    * Prep for 0.8.00 release

2019-05-26 Kenneth Loafman <email address hidden>

    * Fix TestGlobToRegex.test_glob_to_regex for py3.6 and above
      - see https://bugs.python.org/issue29995 for details

2019-05-25 Kenneth Loafman <email address hidden>

    * Some more work on unadorned strings
      - Fixed test_unadorned_string_literals to list all strings found
      - Added bin/duplicity and bin/rdiffdir to list of files tested
      - All unadorned strings have now been adorned

2019-05-19 Kenneth Loafman <email address hidden>

    * Merged in lp:~mgorse/duplicity/0.8-series
      - Python 3 fixes to imapbackend.py
      - Fix bug 1828869: refresh CollectionsStatus after sync
    * Fixed bug #1828662 with patch from Bas Hulsken
      - string.split() had been deprecated in 2, removed in 3.7

2019-05-05 Kenneth Loafman <email address hidden>

    * Manual merge of lp:~yajo/duplicity/duplicity
      - Support partial metadata sync.
      - Fixes bug #1823858 by letting the user to choose partial syncing. Only the metadata for the target chain
        will be downloaded. If older (or newer) chains are encrypted with a different passphrase, the user will
        be able to restore to a given time by supplying only the passphrase for the chain selected by
        the `--restore-time` option when using this new option.
      - A side effect is that using this flag reduces dramatically the sync time when moving files from one to
        another location, in cases where big amounts of chains are found.

2019-03-16 Kenneth Loafman <email address hidden>

    * Merged in lp:~brandon753-ba/duplicity/aws-glacier
      - Adds support for for a command line option to store data on AWS S3 Glacier.

2019-03-16 Kenneth Loafman <email address hidden>

    * Merged in lp:~mgorse/duplicity/0.8-series
      - More python 3 fixes
    * Merged in lp:~aaron-whitehouse/duplicity/08-uexc-fix
      - Fix for Bug #1770929 with associated test cases (thanks to Pete Zaitcev (zaitcev)
        in Bug #1797928 for the head start).
    * Merged in lp:~aaron-whitehouse/duplicity/08-style-fixes
      - Fix pylint style issues (over-indented text, whitespace on blank lines etc)
      - Removed "pylint: disable=bad-string-format-type" comment, which was throwing
        an error and does not seem to be needed.
    * Removed last mention of copy.com from man page with help from edso.
    * Fix bug #1811114 with revised onedrivebackend.py from David Martin
      - Adapt to new Microsoft Graph API

2019-02-25 Kenneth Loafman <email address hidden>

    * Merged in lp:~mgorse/duplicity/0.8-series
      - More changes for unicode and py3 support
    * Merged in lp:~mterry/duplicity/pydrive-root
      - Just a tiny fix to clean up the temporary file we create to find the root ID.
        It's a little surprising for the user if they wind up with this file called
        "i_am_in_root" that they don't know where it came from. Almost sounds like
        they were hacked.
    * Fixed bug #1817375 with hint from mgorse
      - Added 'global pexpect' at end of imports

2019-01-25 Kenneth Loafman <email address hidden>

    * Merged in lp:~vam9/duplicity/0.8-series-s3-kms-support
      - Added s3 kms server side encryption support with kms-grants support.

2019-01-06 Kenneth Loafman <email address hidden>

    * Merged in lp:~okrasz/duplicity/duplicity
      - Add --azure-blob-tier that specifies storage tier
        (Hot,Cool,Archive) used for uploaded files.

2018-12-27 Kenneth Loafman <email address hidden>

    * Fixed bug #1803896 with patch from slawekbunka
      - Add __enter__ and __exit__ to B2ProgressListener

2018-12-23 Kenneth Loafman <email address hidden>

    * Merged in lp:~mgorse/duplicity/0.8-series
      - First pass at a python 3 port.

2018-10-17 Kenneth Loafman <email address hidden>

    * Fixed bug #1798206 and bug #1798504
      - Made paramiko a global with import during __init__ so it would
        not be loaded unless needed.

2018-12-15 Kenneth Loafman <email address hidden>

    * Merged in lp:~mcuelenaere/duplicity/duplicity
      - Make sure we don't load files completely into memory when transferring them from/to
        the remote WebDAV endpoint.

2018-10-16 Kenneth Loafman <email address hidden>

    * Merged in lp:~mgorse/duplicity/0.8-series
      - Run futurize --stage1, and adjust so that tests still pass.
    * Fixed but #1797797 with patch from Bas Hulsken
      - use bytes instead of unicode for '/' in filenames

2018-10-11 Kenneth Loafman <email address hidden>

    * Merged in lp:~mgorse/duplicity/0.8-series
      - Adorn some remaining strings

2018-08-17 Kenneth Loafman <email address hidden>

    * Merged in lp:~qsantos/duplicity/fix-unmatched-rule-error
      - There are actually two commits: the first fixes a very minor detail in the README regarding the
        Python version that should be used; the second fixes the way exceptions are handled when an
        incorrect rule is specified, and display the nice error message rather than an obscure stack trace.

2018-08-17 Kenneth Loafman <email address hidden>

    * Merged in lp:~mgorse/duplicity/0.8-series
      - Adorn some duplicity/*.py strings. I've avoided submitting anything that I think might require
        significant discussion; I think that reviewing will be easier this way. Mostly annotated strings
        as unicode, except for librsync.py.

2018-08-01 Kenneth Loafman <email address hidden>

    * Added AUTHORS file listing all copyright claimants in headers

2018-07-26 Kenneth Loafman <email address hidden>

    * Adorned strings in testing/, testing/functional/, and testing/unit

2018-07-24 Kenneth Loafman <email address hidden>

    * Reverted back to rev 1317 and reimplemented revs 1319 to 1322

2018-07-23 Kenneth Loafman <email address hidden>

    * Fixed unadorned strings to unicode in duplicity/backends/*
      - Some fixup due to shifting indentataion not matching PEP8.

2018-07-22 Kenneth Loafman <email address hidden>

    * Added function to fix unadorned strings (testing/fix_unadorned_strings.py)
      - Fixes by inserting 'u' before token string
      - Solves 99.9% of the use cases we have
      - Fix unadorned strings to unicode in bin/duplicity and bin/rdiffdir
      - Add import for __future__.print_function to find_unadorned_strings.py

2018-07-20 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/08-adorn-strings
      - Adorning string literals (normally to make these unicode), in support of a transition to Python 3.
        See https://blueprints.launchpad.net/duplicity/+spec/adorn-string-literals
      - Adorn string in duplicity/globmatch.py.
      - Adorn strings in testing/unit/test_globmatch.py
      - Adorn strings in selection.py
      - Adorn strings in functional/test_selection.py and unit/test_selection.py
      - Remove ignores for these files in test_code.py

2018-07-08 Kenneth Loafman <email address hidden>

    * Fixed bug #1780617 Test fail when GnuPG >= 2.2.8
      - Relevant change in GnuPG 2.2.8: https://dev.gnupg.org/T3981
      - Added '--ignore-mdc-error' to all gpg calls made.

2018-07-07 Kenneth Loafman <email address hidden>

    * Merged in lp:~excitablesnowball/duplicity/s3-onezone-ia
      - Add option --s3-use-onezone-ia S3 One Zone Infrequent Access Storage

2018-06-09 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/08-pycodestyle
      - Tox changes to accommodate new pycodestyle version warnings.
        Ignored W504 for now and marked as a TODO.
        Marked W503 as a permanent ignore, as it is prefered to the (mutually exclusive) W504 under PEP8.
      - Marked various regex strings as raw strings to avoid the new W605 "invalid escape sequence".
    * Merged in lp:~aaron-whitehouse/duplicity/08-unadorned-strings
      - Added new script to find unadorned strings (testing/find_unadorned_strings.py python_file)
        which prints all unadorned strings in a .py file.
      - Added a new test to test_code.py that checks across all files for unadorned strings and gives
        an error if any are found (most files are in an ignore list at this stage, but this will allow
        us to incrementally remove the exceptions as we adorn the strings in each file).
      - Adorn string literals in test_code.py with u/b

2018-05-07 Kenneth Loafman <email address hidden>

    * Fixed bug #1768954 with patch from Max Hallden
      - Add AZURE_ENDPOINT_SUFFIX environ variable to allow setting to non-U.S. servers
    * Fixed bug #x1717935 with suggestion from strainu
      - Use urllib.quote_plus() to properly quote pathnames passed via URL

2018-05-01 Kenneth Loafman <email address hidden>

    * Merged in lp:~dawgfoto/duplicity/fixup1252
      * only check decryptable remote manifests
        - fixup of revision 1252 which introduces a non-fatal error message (see #1729796)
        - for backups the GPG private key and/or it's password are typically not available
        - also avoid interactive password queries through e.g. gpg agent

2018-01-21 Kenneth Loafman <email address hidden>

    * Merged in lp:~dawgfoto/duplicity/fixup1251
      - Avoid redundant replication of already present backup sets.
      - Fixed by adding back BackupSet.__eq__ which was accidentally(?) removed in 1251.

2017-12-24 Kenneth Loafman <email address hidden>

    * Reduce dependencies on backend libraries
      - Moved backend imports into backend class __init__ method
      - Surrounded imports with try/except to allow better errors
      - Put all library dependencies in requirements.txt

2017-12-22 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/08-ufn-to-fsdecode
      - Change util.fsdecode to use "replace" instead of "ignore" (matching behaviour of util.ufn)
      - Replace all uses of ufn with fsdecode
      - Make backend.tobytes use util.fsencode rather than reimplementing

2017-12-20 Kenneth Loafman <email address hidden>

    * Fixes so pylint 1.8.1 does not complain about missing conditional imports.
      - Fix dpbxbackend so that imports require instantiation of the class.
      - Added pylint: disable=import-error to a couple of conditional imports

2017-12-14 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/08-ufn-to-uc_name
      - Replace util.ufn(path.name) with path.uc_name throughout.

2017-12-13 Kenneth Loafman <email address hidden>

    * More pytest changes
      - Use requirements.txt for dependencies
      - Run unit tests first, then functional
      - Some general cleanup

2017-12-12 Kenneth Loafman <email address hidden>

    * Converted to use pytest instead of unittest (setup.py test is now discouraged)
      - We use @pytest.mark.nocapture to mark the tests (gpg) that require
        no capture of file streams (currently 10 tests).
      - The rest of the tests are run normally

2017-12-03 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/08-unicode
      - Many strings have been changed to unicode for better handling of international
        characters and to make the transition to Python 3 significantly easier, primarily
        on the 'local' side of duplicity (selection, commandline arguments etc) rather
        than any backends etc.

2017-11-28 Kenneth Loafman <email address hidden>

    * Merged in lp:~crosser/duplicity/fix-small-file-upload
      - Fixed small file upload changes made in Dropbox SDK v7.1

2017-11-25 Kenneth Loafman <email address hidden>

    * Merged in lp:~crosser/duplicity/fix-oauth-flow
      - Fixed bug #1638236 "BackendException with oauth2client 4.0.0"
    * Merged in lp:~crosser/duplicity/dpbx-fix-file-listing
      - Fixed bug #1639664 "Dropbox support needs to be updated for Dropbox SDK v7.1"

2017-11-23 Kenneth Loafman <email address hidden>

    * More fixes for Unicode handling
      - Default to 'utf-8' if sys.getfilesystemencoding() returns 'ascii' or None
      - Fixed bug #1386373 with suggestion from Eugene Morozov

2017-11-18 Kenneth Loafman <email address hidden>

    * Fixed bug #1733057 AttributeError: 'GPGError' object has no attribute 'decode'
      - Replaced call to util.ufn() with call to util.uexc(). Stupid typo!

2017-11-09 Kenneth Loafman <email address hidden>

    * Fixed bug #1730902 GPG Error Handling
      - use util.ufn() not str() to handle encoding

2017-11-01 Kenneth Loafman <email address hidden>

    * Fixed bug #1723890 with patch from Killian Lackhove
      - Fixes error handling in pydrivebackend.py

2017-10-31 Kenneth Loafman <email address hidden>

    * Fixed bug #1720159 - Cannot allocate memory with large manifest file since 0.7.03
      - filelist is not read if --file-changed option in collection-status not present
      - This will keep memory usage lower in non collection-status operations

2017-10-26 Kenneth Loafman <email address hidden>

    * Fixed bug #1448094 with patch from Tomáš Zvala
      - Don't log incremental deletes for chains that have no incrementals
    * Fixed bug #1724144 "--gpg-options unused with some commands"
      - Add --gpg-options to get version run command

2017-10-16 Kenneth Loafman <email address hidden>

    * Fixed bug #1654756 with new b2backend.py module from Vincent Rouille
      - Faster (big files are uploaded in chunks)
      - Added upload progress reporting support

2017-10-12 Kenneth Loafman <email address hidden>

    * Patched in lp:~mterry/duplicity/rename-dep
      - Make rename command a dependency for LP build

2017-09-22 Kenneth Loafman <email address hidden>

    * Fixed bug #1714663 "Volume signed by XXXXXXXXXXXXXXXX, not XXXXXXXX"
      - Normalized comparison length to min length of compared keys before comparison
      - Avoids comparing mix of short, long, or fingerprint size keys.

2017-09-13 Kenneth Loafman <email address hidden>

    * Fixed bug #1715650 with patch from Mattheww S
      - Fix to make duplicity attempt a get first, then create, a container
        in order to support container ACLs.

2017-09-07 Kenneth Loafman <email address hidden>

    * Merged in lp:~mterry/duplicity/more-decode-issues
      - Here's some fixes for another couple UnicodeDecodeErrors.
      - The duplicity/dup_time.py fixes when a user passes a utf8 date string (or a string with bogus
        utf8 characters, but they have to really try to do that). This is bug 1334436.
      - The bin/duplicity change from str(e) to util.uexc(e) fixes bug 1324188.
      - The rest of the changes (util.exception_traceback and bin/duplicity changes to use it) are to
        make the printing of exceptions prettier. Without this, if you see a French exception, you see
        "accept\xe9es" instead of "acceptées".
      - You can test all of these changes in one simple line:
        $ LANGUAGE=fr duplicity remove-older-than $'accept\xffées'
    * Fix backend.py to allow string, list, and tuple types to support megabackend.py.

2017-09-06 Kenneth Loafman <email address hidden>

    * Fixed bug introduced in new megabackend.py where process_commandline()
      takes a string not a list. Now it takes both.
    * Updated web page for new megabackend requirements.

2017-09-01 Kenneth Loafman <email address hidden>

    * Fixed bug #1538333 Assertion error in manifest.py: assert filecount == ...
      - Made sure to never pass .part files as true manifest files
      - Changed assert to log.Error to warn about truncated/corrupt filelist
      - Added unit test to make sure detection works
      - Note: while this condition is serious, it will not affect the basic backup and restore
        functions. Interactive options like --list-files-changed and --file-changed will not
        work correctly for this backup set, so it is advised to run a full backup as soon as
        possible after this error occurs.
    * Fixed bug #1638033 Remove leading slash on --file-to-restore
      - code already used rstrip('/') so change to just strip('/')

2017-08-29 Kenneth Loafman <email address hidden>

    * Fixed bug #1394386 with new module megabackend.py from Tomas Vondra
      - uses megatools from https://megatools.megous.com/ instead of mega.py library
        which has been deprecated
      - fixed copyright and PEP8 issues
      - replaced subprocess.call() with self.subprocess_popen() to standardize

2017-08-28 Kenneth Loafman <email address hidden>

    * Fixed bug #1711905 with suggestion from Schneider
      - log.Warn was invoked with log.warn in webdavbackend.py
    * Merged in lp:~mterry/duplicity/gpg-tag-versions
      - Support gpg versions numbers that have tags on them.
      - This can happen if you build gpg from git trunk (e.g. 2.1.15-beta20). Or if you run
        against the freedesktop flatpak runtime (e.g. 2.1.14-unknown).

2017-08-15 Kenneth Loafman <email address hidden>

    * Fixed bug #1709047 with suggestion from Gary Hasson
      - fixed so default was to use original filename
    * Fixed PEP8 errors in bin/duplicity
    * Merged in lp:~mterry/duplicity/gio_child_for_display_name
      - gio: be slightly more correct and get child GFiles based on display name

2017-08-06 Kenneth Loafman <email address hidden>

    * Merged in lp:~mterry/duplicity/giobackend-display-name
      - giobackend: handle a wider variety of gio backends by making less assumptions;
        in particular, this fixes the google-drive: backend

2017-07-20 Kenneth Loafman <email address hidden>

    * Fixed encrypted remote manifest handling to merely put out a non-fatal
      error message and continue if the private key is not available.

2017-07-19 Kenneth Loafman <email address hidden>

    * Fixed slowness in 'collection-status' by basing the status on the
      remote system only. The local cache is treated as empty.

2017-07-11 Kenneth Loafman <email address hidden>

    * Patched in lp:~dawgfoto/duplicity/skip_sync_collection_status
      - collection-status should not sync metadata
      - up-to-date local metadata is not needed as collection-status is
        generated from remote file list
      - syncing metadata might require to download several GBs

2017-06-30 Kenneth Loafman <email address hidden>

    * Merged in lp:~xlucas/duplicity/multibackend-prefix-affinity
      - Support prefix affinity in multibackend.
    * Merged in lp:~xlucas/duplicity/pca-backend
      - Add support for OVH Public Cloud Archive backend.
    * Fixed PEP8 and 2to3 issues.

2017-06-23 Kenneth Loafman <email address hidden>

    * Merged in lp:~dawgfoto/duplicity/replicate
      - Add integration test for newly added replicate command.
      - Also see https://code.launchpad.net/~dawgfoto/duplicity/replicate/+merge/322836.

2017-06-19 Kenneth Loafman <email address hidden>

    * Fixed problem in dist/makedist when building on Mac where AppleDouble
      files were being created in the tarball. See:
      https://superuser.com/questions/61185/why-do-i-get-files-like-foo-in-my-tarball-on-os-x

2017-06-10 Kenneth Loafman <email address hidden>

    * Fixed bug #1265765 with patches from Matthias Larisch and Edgar Soldin
      - SSH Paramiko backend now uses BufferedFile implementation to enable
        collecting the entire list of files on the backend.
    * Copy.com is gone so remove copycombackend.py.
    * Merged in lp:~xlucas/duplicity/swift-multibackend-bug
      - Fix a bug when swift backend is used in a multibackend configuration.

2017-06-04 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/08-fix-man-verify
      - Fix description of --verify and --compare-data in the man page. Now
        clarifies that verify compares the restored files to hashes stored at
        backup date, while --compare-data compares restored files to files
        in target_path.

2017-06-03 Kenneth Loafman <email address hidden>

    * Merged in lp:~dernils/duplicity/docker-compose
      - Test Infrastructure now utilizing docker-compose

2017-06-02 Kenneth Loafman <email address hidden>

    * Fix bug #1672540 with patch from Benoit Nadeau
      - Rename would fail to move par files when moving across filesystems.
      - Patch uses shutil.move() to do the rename instead.

2017-05-31 Kenneth Loafman <email address hidden>

    * Revisited bug #670891 with patch from Edgar Soldin
      - Forced librsync.PatchedFile() to extract file object from TemporaryFile()
        object when on Windows or Cygwin systems. This allows us to avoid the
        problem of tmpfile() use which creates temp files in the wrong place.
      - See discussion at https://bugs.launchpad.net/duplicity/+bug/670891

2017-05-17 Kenneth Loafman <email address hidden>

    * May have finally fixed bug #1556553, "Too many open files...".
      - Applied patch from Howard Kaye, question #631423. The fix is to dup
        the file descriptor, and then close the file in the deallocator
        routine in the glue code. Duping the file lets the C code and the Python
        code each close the file when they are done with it.
      - Invalidated and removed the fix put in for bug #1320832.
      - Caveat: long incremental chains will still eat up a large number of file
        descriptors. It's a very risky practice, so I'm not inclined to fix it.

2017-05-15 Kenneth Loafman <email address hidden>

    * Merged in lp:~dernils/duplicity/Dockerfile
      - Now have subnet name and IP of the subnet for testing as a variable.

2017-05-14 Kenneth Loafman <email address hidden>

    * Merged in lp:~xlucas/duplicity/swift-storage-policies
      - This brings support for Swift storage policies: when using a Swift
        backend, you can specify the policy containers should be operating on.
      - This is similar to AWS Cloud Storage classes (ia, rrs, glacier and so on).
    * Merged in lp:~dernils/duplicity/Dockerfile
      - Added another backend to the docker test infrastructure, updated the setup
        for testing and updated the documentation.

2017-05-12 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/tox_pylint_fixes
      - Changes needed to run-tests without pylint E0401(import-error) errors

2017-05-11 Kenneth Loafman <email address hidden>

    * Fixed bug #1320641 and others regarding lockfile
      - swap from lockfile to fasteners module
      - use an fcntl() style lock for process lock of duplicity cache
      - lockfile will now clear if duplicity is killed or crashes

2017-05-09 Kenneth Loafman <email address hidden>

    * Fixed bug #1689632 with patch from Howard Kaye
      - On MacOS, the tempfile.TemporaryFile call erroneously raises an
        IOError exception saying that too many files are open. This causes
        restores to fail randomly, after thousands of files have been restored.

2017-05-06 Kenneth Loafman <email address hidden>

    * Merged in lp:~dernils/duplicity/DockerfileConvenience
      - Add a few files that are the beginning of further infrastructure based
        on docker. It contains a Dockerfile for a simple ftp server (used for
        backend testing) and a setup script that can be used to set up the
        complete test environment.
    * Moved Dockerfile for duplicitytest into testinfrastructure/duplicity_test
    * Moved some things around in testing/infrastructure to clean up

2017-05-05 Kenneth Loafman <email address hidden>

    * Merged in lp:~dernils/duplicity/DockerfileConvenience
      - Added a few tools to the Dockerfile that make life easier
    * Fixed bug #1320832 with suggestion from Oskar Wycislak
      - Use chunks instead of reading it all in swiftbackend

2017-05-04 Kenneth Loafman <email address hidden>

    * Merged in lp:~dawgfoto/duplicity/replicate
      - Add replicate command to replicate a backup (or backup
        sets older than a given time) to another backend, leveraging
        duplicity's backend and compression/encryption infrastructure.
    * Fixed some incoming PyLint and PEP-8 errors.
    * Merged in lp:~marix/duplicity/add-azure-arguments
      - Using the Azure backend to store large amounts of data we found that
        performance is sub-optimal. The changes on this branch add command line
        parameters to fine-tune some parameters of the Azure storage library,
        allowing to push write performance towards Azure above 1 Gb/s for large
        back-ups. If a user does not provide the parameters the defaults of the
        Azure storage library will continue to be used.
    * Replace incoming non-ASCII chars in commandline.py
    * bzr does not honor perms so fix the perms at the start of the testing and
      avoid annoying error regarding testing/gnupg having too lenient perms

2017-04-23 Kenneth Loafman <email address hidden>

    * Merged in lp:~dernils/duplicity/testing
      - Fixed minor stuff in requirements.txt.
      - Added a Dockerfile for testing.
      - Minor changes to README files.
      - Added README-TESTING with some information on testing.
    * Merged in lp:~dernils/duplicity/documentation
      - Minor changes to README-REPO, README-TESTING
      - Also redo the changes to requirements.txt and Dockerfile

2017-04-22 Kenneth Loafman <email address hidden>

    * Fixed bug #1680682 with patch supplied from Dave Allan
      - Only specify --pinentry-mode=loopback when --use-agent is not specified
    * Fixed man page that had 'cancel' instead of 'loopback' for pinentry mode
    * Fixed bug #1684312 with suggestion from Wade Rossman
      - Use shutil.copyfile instead of os.system('cp ...')
      - Should reduce overhead of os.system() memory usage.

2017-03-13 Kenneth Loafman <email address hidden>

    * Fixed bug #1668750 - Don't mask backend errors
      - added exception prints to module import errors

2017-03-11 Kenneth Loafman <email address hidden>

    * Fixed bug #1671852 - Code regression caused by revision 1108
      - change util.uexc() back to bare uexc()

2017-03-05 Kenneth Loafman <email address hidden>

    * Merged in p:~aaron-whitehouse/duplicity/pep8_E402_fixes
      - Fixed PEP8 errors: E402 module level import not at top of file

2017-03-02 Kenneth Loafman <email address hidden>

    * Merged in lp:~benoit.bertholon/duplicity/duplicity
      - Use the globals.archive_dir variable to store only a string
        in the case of a path, uses globals.archive_dir_path

2017-02-21 Kenneth Loafman <email address hidden>

    * Merged in lp:~marix/duplicity/azure-storage-0.30.0-plus
      - This makes the Azure backend compatible with version 0.30.0 and up of the
        underlying azure-storage package.
    * Merged in lp:~marix/duplicity/azure-storage-sas
      - This branch adds support for Shared Access Signature to the Azure backend
        which allows to run Duplicity with a minimal set of permissions.
    * Merged in lp:~aaron-whitehouse/duplicity/pep8_test_fixes
      - Fix PEP-8 testing by moving to using pycodestyle library.
      - Temporarily add ignores to allow these tests to pass.
      - Fix E305 PEP8 errors: expected 2 blank lines after class or function definition, found 1.
    * Merged in lp:~benoit.bertholon/duplicity/duplicity
      - Fixes bug #1666194 - ProcessCommandLine function called twice fail and arglist argument not used
    * Fixed variable name change in last merge which broke a bunch of tests
      - Changed archive_dir_root back to archive_dir
    * Fixed bug #1367675 - IMAP Backend does not work with Yahoo server
      - added the split() as needed in 'nums=list[0].strip().split(" ")'
      - the other fixes mentioned in the bug report comments were already done

2017-02-12 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/08-python-futurize-stage-1
      - Made many of the safer changes for improved Python 3 support (python-future's futurize -stage1)
        without functional change to the code (and leaving the isinstance(s, types.StringType) tests unchanged).
      - Created Python 2/3 compatible tests for int and long.
      - Update setup.py to show only Python 2.7 support.

2017-02-11 Kenneth Loafman <email address hidden>

    * Fixed bug #1603704 with patch supplied by Maciej Bliziński
      - Crash with UnicodeEncodeError

2017-02-08 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/08-refactor-unit-test-globmatch
      - Rename path_matches_glob_fn to select_fn_from_glob, as this more accurately reflects the return value.
      - Significantly refactored unit/test_globmatch.py to make this cleaner and clearer.
    * Fixed bug #1657916 with patch supplied by Daniel Harvey
      - B2 provider cannot handle two backups in the same bucket

2017-02-07 Kenneth Loafman <email address hidden>

    * Add detail about import exceptions in onedrivebackend.py

2017-01-30 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/08-merge-glob-parsers
      - Use a single code path for glob strings whether or not these contain special
        characters/wildcards (glob_get_normal_sf) and remove glob_get_filename_sf and glob_get_tuple_sf.
      - Remove run-tests-ve as this was identical to run-tests.

2017-01-24 Kenneth Loafman <email address hidden>

    * Merged in lp:~matthew-t-bentley/duplicity/duplicity
      - Sets a user agent. Backblaze asked for this in case there are errors that originate
        from the Duplicity B2 backend
      - Only retrieves a new upload URL when the current one expires, to bring it in line
        with their best practices for integrations: https://www.backblaze.com/b2/docs/integration_checklist.html

2017-01-19 Kenneth Loafman <email address hidden>

    * Fixed bug #1655268 "--gpg-binary option not working"
      - If gpg binary is specified rebuild gpg profile using new binary location

2017-01-16 Kenneth Loafman <email address hidden>

    * Fixed bug #1623342 with patch supplied by Daniel Jakots
      - Failing test on OpenBSD because tar/gtar not found
    * Fixed bug #1654220 with patch supplied by Kenneth Newwood
      - Duplicity fails on MacOS because GPG version parsing fails
    * Merged in lp:~aaron-whitehouse/duplicity/0-8-merge_selection_tests
      - Merge in TestExcludeIfPresent from 0.7-series, which tests the behaviour of
        duplicity's --exclude-if-present option.
      - Move and rename TestTrailingSlash2 test (was duplicate name) as in 0.7-series.
      - Fix PEP error on adbackend.py.
      - Add jottalib as a tox dep to fix pylint error.
      - Remove unnecessary skipUnless Linux as per 0.7-series.

2016-12-29 Kenneth Loafman <email address hidden>

    * Fix Bug #1642813 with patch from Ravi
      - If stat() returns None, don't attempt to set perms.
    * Merged in lp:~breunigs/duplicity/amazondrive3
      - As reported on the mailinglist, if a space is entered while duplicity asks for the URL, it fails.
        Since all important spaces are URL encoded anyway, this should be fine even if there are spaces in
        the URL at all. I also patched it in the onedrive backend, because it must have similar issues.

2016-12-25 Kenneth Loafman <email address hidden>

    * Fix some issues with testing on MacOS
    * Fix problem with gpg2 in yakety and zesty

2016-12-11 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/Bug_1624725_files_within_folder_slash
      - Fixed Bug #1624725, so that an include glob ending in "/" now includes folder contents (for globs with
        and without special characters). This preserves the behaviour that an expression ending in "/" only
        matches a folder, but now the contents of any matching folder is included.

2016-12-08 Kenneth Loafman <email address hidden>

    * Merged in lp:~horgh/duplicity/copy-symlink-targets-721599
      - Add --copy-links to copy symlink contents, not just the link itself.

2016-11-21 Kenneth Loafman <email address hidden>

    * Fix bug using 40-char sign keys, from Richard McGraw on mail list
      - Remove truncation of argument and adjust comments
    * Merged in lp:~dernils/duplicity/robust-dropbox-backend
      - Added new command line option --backend-retry-delay
        that allows to determine the time that duplicity sleeps
        before retrying after an error has occured.
      - Added some robustness to dpbxbackend.py that ensures re-authentication
        happens in case that a socket is changed (e.g. due to a forced reconnect
        of a dynamic internet connection).
    * Merged in lp:~ed.so/duplicity/manpage.fixes
      - Fix html output via rman on the website

2016-11-16 Kenneth Loafman <email address hidden>

    * Fixed bug #1642098 - does not create PAR2 archives when '--par2-options' is used
      - Missing space between par2-options plus default options

2016-11-07 Kenneth Loafman <email address hidden>

    * Merged in lp:~breunigs/duplicity/amazondrive2
      - Fixed variable renaming issue

2016-11-01 Kenneth Loafman <email address hidden>

    * Fixed bug #1621194 with code from Tornhoof
      - Do backup to google drive working without a service account
    * Merged in lp:~havard/duplicity/jottacloudbackend
      - Adds support for a new backend, jottacloud.com, using the scheme `jottacloud:/<folder>`.
      - Reverse-engineered library, `jottalib`: http://github.com/havardgulldahl/jottalib
      - Here's how you set up jottalib https://github.com/havardgulldahl/jottalib/wiki
    * Merged in lp:~breunigs/duplicity/amazondrive
      - Provide a native backend for AmazonDrive

2016-10-22 Kenneth Loafman <email address hidden>

    * Merged in lp:~mwilck/duplicity/duplicity
      - GPG: enable truly non-interactive operation with gpg2
      - This patch fixes the IMO unexpected behavior that, when using GnuPG2, a pass phrase dialog always pops up for
        saving backups. This is particularly annoying when trying to do unattended / fully automatic backups.

2016-09-16 Kenneth Loafman <email address hidden>

    * Fixed bug #1623342 with patch from Daniel Jakots
      - failing test on OpenBSD because tar/gtar not found

2016-08-22 Kenneth Loafman <email address hidden>

    * Fixed bugs #815510 and #1615480
      - Changed default --volsize to 200MB
    * Merged in lp:~mstoll-de/duplicity/duplicity
      - Backblaze announced a new domain for the b2 api

2016-08-18 Kenneth Loafman <email address hidden>

    * Merged in lp:~fenisilius/duplicity/acd_init_mkdir
      - Allow duplicity to create remote folder

2016-08-12 Kenneth Loafman <email address hidden>

    * Fixed bug #1612472 with patch from David Cuthbert
      - Restore from S3 fails with --with-prefix-archive if prefix includes '/'
    * Merged in lp:~arashad.ahamad/duplicity/duplicity_latest
      - Changes for connecting to IBM Bluemix ObjectStorage. See man page.

2016-07-31 Kenneth Loafman <email address hidden>

    * Fixed conflict in merge from Martin Wilck and applied
      - https://code.launchpad.net/~mwilck/duplicity/0.7-series/+merge/301492
      - merge fixes setsid usage in functional testing.

2016-07-28 Kenneth Loafman <email address hidden>

    * Merged in lp:~mwilck/duplicity/duplicity
      - Speedup of path_matches_glob() by about 8x. See
        https://code.launchpad.net/~mwilck/duplicity/duplicity/+merge/301268
        for more details.

2016-07-24 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/07-fix_deja_dup_error_on_locked_files
      - Revert log.Error to log.Warn, as it was prior to the merge in rev 1224,
        as this was affecting other applications (e.g. deja dup; Bug #1605939).

2016-07-20 Kenneth Loafman <email address hidden>

    * Fixed bug #1600692 with patch from Wolfgang Rohdewald
      - Allow symlink to have optional trailing slash during verify.

2016-07-03 Kenneth Loafman <email address hidden>

    * Merged in lp:~aaron-whitehouse/duplicity/remove-python26
      - Remove Python 2.6 support references and tests.

1 blueprint and 17 bugs targeted

Blueprint Priority Assignee Delivery
Python 3 Support Python 3 Support 4 High Aaron Whitehouse  11 Implemented
Bug report Importance Assignee Status
1440372 #1440372 please port duplicity to Python3 3 High   10 Fix Released
1793993 #1793993 S3 KMS Server Side Encryption 3 High   10 Fix Released
1811114 #1811114 onedrive backend HTTP error 410: Gone for URL 3 High   10 Fix Released
687295 #687295 backup without private key 4 Medium   10 Fix Released
1320832 #1320832 high ram use during initial full-signatures download 4 Medium   10 Fix Released
1612472 #1612472 Restore from S3 fails with --with-prefix-archive if prefix includes '/' 4 Medium   10 Fix Released
1666194 #1666194 ProcessCommandLine function called twice fail and arglist argument not used 4 Medium   10 Fix Released
1671755 #1671755 OverflowError 2147483647 bytes 4 Medium   10 Fix Released
1688659 #1688659 Improve man page for verify and --compare-data 4 Medium   10 Fix Released
1768954 #1768954 azure backend not working with german servers 4 Medium   10 Fix Released
1770929 #1770929 Duplicity fails with UnicodeDecodeError in uexc function 4 Medium   10 Fix Released
1795227 #1795227 NameError: global name 'Dropbox' is not defined 4 Medium   10 Fix Released
1797797 #1797797 unicode errors in sigtar2path_iter on filenames with non ascii characters 4 Medium   10 Fix Released
1803896 #1803896 B2ProgressListener instance has no attribute '__exit__' 4 Medium   10 Fix Released
1817375 #1817375 ssh_pexpect backend failing in 0.8 4 Medium   10 Fix Released
1828662 #1828662 long deprecated string.split removed in python 3.7 4 Medium   10 Fix Released
1828869 #1828869 list-current-files fails if sync is needed 4 Medium   10 Fix Released
This milestone contains Public information
Everyone can see this information.