← Back to team overview

duplicity-team team mailing list archive

[Merge] lp:~mgorse/duplicity/0.7-series into lp:duplicity

 

Mgorse has proposed merging lp:~mgorse/duplicity/0.7-series into lp:duplicity.

Requested reviews:
  duplicity-team (duplicity-team)

For more details, see:
https://code.launchpad.net/~mgorse/duplicity/0.7-series/+merge/367631

Fix bug#1828869: refresh CollectionsStatus after sync
-- 
The attached diff has been truncated due to its size.
Your team duplicity-team is requested to review the proposed merge of lp:~mgorse/duplicity/0.7-series into lp:duplicity.
=== modified file 'CHANGELOG'
--- CHANGELOG	2019-05-19 16:14:00 +0000
+++ CHANGELOG	2019-05-20 08:57:58 +0000
@@ -1,3 +1,4 @@
+<<<<<<< TREE
 New in v0.8.00 (2019/??/??)
 ---------------------------
 * Merged in lp:~aaron-whitehouse/duplicity/remove-python26
@@ -128,46 +129,192 @@
   - change util.uexc() back to bare uexc()
 * Fixed bug #1668750 - Don't mask backend errors
   - added exception prints to module import errors
+=======
+New in v0.7.19 (2019/04/29)
+-----------------------------
+* 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:~mterry/duplicity/pydrive-root-0.7
+  - 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.
+* Merged in 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.
+* Prep for release.
+
+
+New in v0.7.18.2 (2018/10/17)
+-----------------------------
+* Fixed bug #1788558 again
+  - If we get None for size skip check.
+
+
+New in v0.7.18.1 (2018/08/27)
+-----------------------------
+* Fixed bug #1788558
+  - Treat None as zero when printing log.
+* Revert fix for bug #1788599.
+  - Was causing problems with directory names
+
+
+New in v0.7.18 (2018/08/21)
+---------------------------
+* Fixed bug #1756550 Online html man page is showing a 0 byte file
+* Partial fix of bug #1734144 with patch from Joris van Eijden
+  - Note: this is really just a partial fix for now, since it only covers
+    the case where the local size does not yet match the remote size.  A
+    case where -1 is the returned length is not fixed.
+  - Number of retries is now same as globals.num_retries.
+  - Added standoff delay of 0.5 sec per attempt.
+* Fixed bug #1764432 with patch from Robke Geenen
+  - Just join the parts together.
+* Fixed bug #1717935 with suggestion from strainu
+  - Use urllib.quote_plus() to properly quote pathnames passed via URL
+* 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.
+* Fixed bug #1785520 with patch from Chris Hunt
+  - Fix for B2 version 1.3.4 just released
+* Fix a 2to3 error in ssh_paramiko_backend.py
+
+
+New in v0.7.17 (2018/02/26)
+---------------------------
+* Removed changes made in bug #1044715 Provide a file history feature
+  - Changes required too much memory to carry in the manifest
+  - The option --file-changed in collection-status is now invalid
+  - This will close bugs: #1730451, #896728, #1526557, #1550176
+  - Starting a full backup will be needed to fully utilize this fix
+* Fix update of Launchpad Translations.  Translations were not being picked
+  up on a daily basis and we got several months behind.
+
+
+New in v0.7.16 (2018/01/12)
+---------------------------
+* 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
+* Patched in lp:~crosser/duplicity/fix-oauth-flow
+  - Fixed bug #1638236 "BackendException with oauth2client 4.0.0"
+* Patched in lp:~crosser/duplicity/dpbx-fix-file-listing
+  - Fixed bug #1639664 "Dropbox support needs to be updated for Dropbox SDK v7.1"
+* Patched in lp:~crosser/duplicity/fix-small-file-upload
+  - Fixed small file upload changes made in Dropbox SDK v7.1
+* Fix pylint error in webdavbackend.py
+
+
+New in v0.7.15 (2017/11/13)
+---------------------------
+* 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.
+* Patched 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.
+* Merged 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
+
+
+New in v0.7.14 (2017/08/31)
+---------------------------
+* Merged 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.
+* Patched 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_0.7
+  - 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 #1713640 with patch from Aleksandar Ivanisevic
+  - replace 2.7 syntax with 2.6 equivalent
+* 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('/')
+
+
+New in v0.7.13.1 (2017/06/18)
+-----------------------------
+* 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
+
+
+New in v0.7.13 (2017/06/12)
+---------------------------
+>>>>>>> MERGE-SOURCE
 * 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
@@ -176,17 +323,6 @@
   - 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
@@ -203,19 +339,13 @@
 * 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.
+<<<<<<< TREE
 * 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
@@ -431,6 +561,116 @@
   - 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
+=======
+* Merged in lp:~duplicity-team/duplicity/po-updates
+
+
+New in v0.7.12 (2017/03/21)
+---------------------------
+* 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
+* Fixed bug #1655268 "--gpg-binary option not working"
+  - If gpg binary is specified rebuild gpg profile using new binary location
+* Fixed bug #1658283 "Duplicity 0.7.11 broken with GnuPG 2.0"
+  - Made gpg version check more robust than just major version
+  - Now use --pinentry-mode=loopback on gpg 2.1 and greater
+  - Removed check for non-Linux systems, a false problem
+* 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
+* Add detail about import exceptions in onedrivebackend.py
+* 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
+* Some fixes to gpg.py to handle gpg1 & gpg2 & gpg2.1 commandline issues
+  - --gpg-agent is optional on gpg1, but on gpg2 it is used automatically
+  - --pinentry-mode is not a valid opt until gpg2.1, so condition on that
+* 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
+* 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
+
+
+New in v0.7.11 (2016/12/31)
+---------------------------
+* 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
+* Merged in lp:~aaron-whitehouse/duplicity/bug_1620085_exclude-if-present-locked-folder
+  - Fixes Bug #1620085: --exclude-if-present gives OSError looking for tag in locked folders
+* 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
+* 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 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.
+* Prep for 0.7.11
+
+
+New in v0.7.10 (2016/08/20)
+---------------------------
+* Merged in lp:~mwilck/duplicity/0.7-series
+  - Speedup of path_matches_glob() by about 8x.  See
+    https://code.launchpad.net/~mwilck/duplicity/0.7-series/+merge/301332
+    for more details.
+* Remove -w from setsid in functional tests.
+* 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
+
+
+New in v0.7.09 (2016/07/24)
+---------------------------
+* 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:~duplicity-team/duplicity/po-updates
+>>>>>>> MERGE-SOURCE
 
 
 New in v0.7.08 (2016/07/02)
@@ -471,6 +711,7 @@
   - Set line length error length to 120 (matching tox.ini) for PEP8 and
     fixed E501(line too long) errors.
 * Merged in lp:~duplicity-team/duplicity/po-updates
+<<<<<<< TREE
 * 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
@@ -490,6 +731,10 @@
     they were hacked.
 * Fixed bug #1817375 with hint from mgorse
   - Added 'global pexpect' at end of imports
+=======
+* Fix bug using 40-char sign keys, from Richard McGraw on mail list
+  - Remove truncation of argument and adjust comments
+>>>>>>> MERGE-SOURCE
 
 
 New in v0.7.07.1 (2016/04/19)
@@ -507,6 +752,9 @@
 * Fixed bug #1570293 duplicity is very slow due to excessive fsync
   - removed flush() after write.
   - revert to previous version
+* 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).
 
 
 New in v0.7.07 (2016/04/10)
@@ -759,9 +1007,6 @@
 * Merged in lp:~ed.so/duplicity/gpg.binary
   - new parameter --gpg-binary allows user to point to a different gpg binary,
     not necessarily in path
-* Merged in lp:~ed.so/duplicity/gpg.binary
-  - new parameter --gpg-binary allows user to point to a different gpg binary,
-    not necessarily in path
 * Merged in lp:~aaron-whitehouse/duplicity/fix_POTFILES.in_and_run-tests
   - Fixed two filename references in po/POTFILES.in, a mistake which crept in in
     rev 1093 and caused testing/run-tests to fail with "IndexError: list index

=== modified file 'Changelog.GNU'
--- Changelog.GNU	2019-05-19 16:14:00 +0000
+++ Changelog.GNU	2019-05-20 08:57:58 +0000
@@ -1,3 +1,4 @@
+<<<<<<< TREE
 2019-05-19  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * Merged in lp:~mgorse/duplicity/0.8-series
@@ -371,43 +372,282 @@
       - giobackend: handle a wider variety of gio backends by making less assumptions;
         in particular, this fixes the google-drive: backend
 
+=======
+2019-04-27  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Merged in 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-02-25  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Merged in lp:~mterry/duplicity/pydrive-root-0.7
+      - 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.
+
+2018-10-17  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fixed bug #1798206 and bug #1798504
+      - Made paramiko a global with import during __init__ so it would
+        not be loaded unless needed.
+
+2018-10-17  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Prep for 0.7.18.2
+
+2018-08-27  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fixed bug #1788558 again
+      - If we get None for size skip check.
+
+2018-08-27  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Prep for 0.7.18.1
+
+2018-08-26  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fixed bug #1788558
+      - Treat None as zero when printing log.
+    * Revert fix for bug #1788599.
+      - Was causing problems with directory names
+
+2018-08-21  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fix a 2to3 error in ssh_paramiko_backend.py
+    * Merged in lp:~duplicity-team/duplicity/po-updates
+    * Prep for 0.7.18
+
+2018-08-11  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fixed bug #1785520 with patch from Chris Hunt
+      - Fix for B2 version 1.3.4 just released
+
+2018-07-08  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * 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-05-07  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fixed bug #1717935 with suggestion from strainu
+      - Use urllib.quote_plus() to properly quote pathnames passed via URL
+
+2018-05-01  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * More fixes for bug #1734144
+      - Number of retries is now same as globals.num_retries.
+      - Added standoff delay of 0.5 sec per attempt.
+    * Fixed bug #1764432 with patch from Robke Geenen
+      - Just join the parts together.
+
+2018-04-04  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Partial fix of bug #1734144 with patch from Joris van Eijden
+      - Note: this is really just a partial fix for now, since it only covers
+        the case where the local size does not yet match the remote size.  A
+        case where -1 is the returned length is not fixed.
+
+2018-03-17  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fixed bug #1756550 Online html man page is showing a 0 byte file
+
+2018-02-26  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fix update of Launchpad Translations.  Translations were not being picked
+      up on a daily basis and we got several months behind.
+    * Prep for 0.7.17
+
+2018-02-01  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Removed changes made in bug #1044715 Provide a file history feature
+      - Changes required too much memory to carry in the manifest
+      - The option --file-changed in collection-status is now invalid
+      - This will close bugs: #1730451, #896728, #1526557, #1550176
+      - Starting a full backup will be needed to fully utilize this fix
+
+2018-01-12  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fix pylint error in webdavbackend.py
+    * Prep for 0.7.16
+
+2017-11-28  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Patched in lp:~crosser/duplicity/fix-small-file-upload
+      - Fixed small file upload changes made in Dropbox SDK v7.1
+
+2017-11-25  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Patched in lp:~crosser/duplicity/fix-oauth-flow
+      - Fixed bug #1638236 "BackendException with oauth2client 4.0.0"
+    * Patched 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  <kenneth@xxxxxxxxxxx>
+
+    * 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  <kenneth@xxxxxxxxxxx>
+
+    * 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  <kenneth@xxxxxxxxxxx>
+
+    * Prep for 0.7.15
+
+2017-11-09  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fixed bug #1730902 GPG Error Handling
+      - use util.ufn() not str() to handle encoding
+
+2017-11-01  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fixed bug #1723890 with patch from Killian Lackhove
+      - Fixes error handling in pydrivebackend.py
+
+2017-10-31  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * 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  <kenneth@xxxxxxxxxxx>
+
+    * 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  <kenneth@xxxxxxxxxxx>
+
+    * 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  <kenneth@xxxxxxxxxxx>
+
+    * Merged in lp:~mterry/duplicity/rename-dep
+      - Make rename command a dependency for LP build
+
+2017-09-22  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * 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  <kenneth@xxxxxxxxxxx>
+
+    * 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  <kenneth@xxxxxxxxxxx>
+
+    * 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  <kenneth@xxxxxxxxxxx>
+
+    * 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-08-31  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * 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('/')
+    * Prep for 0.7.14
+
+2017-08-29  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * 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 #1713640 with patch from Aleksandar Ivanisevic
+      - replace 2.7 syntax with 2.6 equivalent
+
+2017-08-28  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * 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  <kenneth@xxxxxxxxxxx>
+
+    * 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_0.7
+      - gio: be slightly more correct and get child GFiles based on display name
+
+2017-08-06  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Patched 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
+
+>>>>>>> MERGE-SOURCE
 2017-07-20  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * 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  <kenneth@xxxxxxxxxxx>
+2017-07-18  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * 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  <kenneth@xxxxxxxxxxx>
 
-    * Patched in lp:~dawgfoto/duplicity/skip_sync_collection_status
+    * Merged 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  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
+2017-06-18  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * 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
+    * Prep for 0.17.13.1
+
+2017-06-10  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Merged in lp:~duplicity-team/duplicity/po-updates
+    * Prep for 0.7.13
 
 2017-06-10  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
@@ -418,19 +658,6 @@
     * 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  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
-
-    * Merged in lp:~dernils/duplicity/docker-compose
-      - Test Infrastructure now utilizing docker-compose
-
 2017-06-02  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * Fix bug #1672540 with patch from Benoit Nadeau
@@ -456,26 +683,6 @@
       - 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  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
 
     * Fixed bug #1320641 and others regarding lockfile
@@ -490,53 +697,12 @@
         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  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
-
-    * Merged in lp:~dernils/duplicity/DockerfileConvenience
-      - Added a few tools to the Dockerfile that make life easier
+2017-05-07  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
     * Fixed bug #1320832 with suggestion from Oskar Wycislak
       - Use chunks instead of reading it all in swiftbackend
 
-2017-05-04  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
+2017-04-20  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * Fixed bug #1680682 with patch supplied from Dave Allan
       - Only specify --pinentry-mode=loopback when --use-agent is not specified
@@ -545,6 +711,10 @@
       - Use shutil.copyfile instead of os.system('cp ...')
       - Should reduce overhead of os.system() memory usage.
 
+2017-03-21  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Prep for 0.7.12
+
 2017-03-13  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * Fixed bug #1668750 - Don't mask backend errors
@@ -555,55 +725,22 @@
     * Fixed bug #1671852 - Code regression caused by revision 1108
       - change util.uexc() back to bare uexc()
 
-2017-03-05  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
 
-    * 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  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
 
     * Fixed bug #1603704 with patch supplied by Maciej Bliziński
       - Crash with UnicodeEncodeError
+    * Some fixes to gpg.py to handle gpg1 & gpg2 & gpg2.1 commandline issues
+      - --gpg-agent is optional on gpg1, but on gpg2 it is used automatically
+      - --pinentry-mode is not a valid opt until gpg2.1, so condition on that
 
 2017-02-08  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
-    * 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
 
@@ -611,13 +748,6 @@
 
     * Add detail about import exceptions in onedrivebackend.py
 
-2017-01-30  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
-
-    * 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  <kenneth@xxxxxxxxxxx>
 
     * Merged in lp:~matthew-t-bentley/duplicity/duplicity
@@ -626,6 +756,13 @@
       - 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-21  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Fixed bug #1658283 "Duplicity 0.7.11 broken with GnuPG 2.0"
+      - Made gpg version check more robust than just major version
+      - Now use --pinentry-mode=loopback on gpg 2.1 and greater
+      - Removed check for non-Linux systems, a false problem
+
 2017-01-19  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * Fixed bug #1655268 "--gpg-binary option not working"
@@ -637,13 +774,10 @@
       - 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-31  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Prep for 0.7.11
 
 2016-12-29  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
@@ -654,9 +788,8 @@
         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  <kenneth@xxxxxxxxxxx>
+2016-12-24  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
-    * Fix some issues with testing on MacOS
     * Fix problem with gpg2 in yakety and zesty
 
 2016-12-11  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
@@ -690,21 +823,10 @@
     * 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  <kenneth@xxxxxxxxxxx>
-
-    * Merged in lp:~breunigs/duplicity/amazondrive2
-      - Fixed variable renaming issue
-
 2016-11-01  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * 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  <kenneth@xxxxxxxxxxx>
 
@@ -718,6 +840,11 @@
     * Fixed bug #1623342 with patch from Daniel Jakots
       - failing test on OpenBSD because tar/gtar not found
 
+2016-09-06  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Merged in lp:~aaron-whitehouse/duplicity/bug_1620085_exclude-if-present-locked-folder
+      - Fixes Bug #1620085: --exclude-if-present gives OSError looking for tag in locked folders
+
 2016-08-22  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * Fixed bugs #815510 and #1615480
@@ -725,6 +852,10 @@
     * Merged in lp:~mstoll-de/duplicity/duplicity
       - Backblaze announced a new domain for the b2 api
 
+2016-08-20  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
+
+    * Prep for 0.7.10
+
 2016-08-18  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * Merged in lp:~fenisilius/duplicity/acd_init_mkdir
@@ -745,27 +876,24 @@
 
 2016-07-28  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
-    * Merged in lp:~mwilck/duplicity/duplicity
+    * Merged in lp:~mwilck/duplicity/0.7-series
       - Speedup of path_matches_glob() by about 8x.  See
-        https://code.launchpad.net/~mwilck/duplicity/duplicity/+merge/301268
+        https://code.launchpad.net/~mwilck/duplicity/0.7-series/+merge/301332
         for more details.
+    * Remove -w from setsid in functional tests.
 
 2016-07-24  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * 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).
+    * Prep for 0.7.09
 
 2016-07-20  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * Fixed bug #1600692 with patch from Wolfgang Rohdewald
       - Allow symlink to have optional trailing slash during verify.
 
-2016-07-03  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
-
-    * Merged in lp:~aaron-whitehouse/duplicity/remove-python26
-      - Remove Python 2.6 support references and tests.
-
 2016-07-02  Kenneth Loafman  <kenneth@xxxxxxxxxxx>
 
     * Merged in lp:~aaron-whitehouse/duplicity/PEP8_W503_fixes

=== modified file 'README'
--- README	2018-10-07 11:54:04 +0000
+++ README	2019-05-20 08:57:58 +0000
@@ -19,7 +19,11 @@
 
 REQUIREMENTS:
 
+<<<<<<< TREE
  * Python v2.7
+=======
+ * Python v2.6 or later
+>>>>>>> MERGE-SOURCE
  * librsync v0.9.6 or later
  * GnuPG for encryption
  * fasteners 0.14.1 or later for concurrency locking
@@ -34,6 +38,7 @@
 
  * Python development files, normally found in module 'python-dev'.
  * librsync development files, normally found in module 'librsync-dev'.
+ * internationalization tools, normally found in module 'intltool'.
 
 
 A NOTE ON GnuPGInterface.py AND MULTIPLE GPG PROCESSES:

=== modified file 'README-REPO'
--- README-REPO	2017-07-11 14:55:38 +0000
+++ README-REPO	2019-05-20 08:57:58 +0000
@@ -26,3 +26,56 @@
 or
 
 PYTHONPATH=$DUP_ROOT bin/rdiffdir
+
+-----------------------
+Running the unit tests:
+-----------------------
+
+To run all tests:
+cd testing; ./run-tests
+
+You can run specific tests using:
+tox -- -s [folder].[folder].[file].[class].[test]
+For example:
+tox -- -s testing.unit.test_selection
+or:
+tox -- -s testing.unit.test_selection.MatchingTest.test_tuple_include
+
+Note: some tests require rdiff and pylint to be installed on the system for
+them to pass.
+
+Please run all tests on your branch (run-tests) before proposing a merge, to
+ensure that all tests pass. The decorator @unittest.expectedFailure can be used
+to commit a known-failing test case without breaking the test suite, for
+example to exhibit the behaviour in a bug report before it has been fixed:
+
+if sys.version_info < (2, 7):
+    import unittest2 as unittest
+else:
+    import unittest
+
+
+class TestClass(unittest.TestCase):
+    """Test class to show expectedFailure"""
+
+    @unittest.expectedFailure
+    def test_expected_failure(self):
+        """Test behaviour of expectedFailure"""
+        self.assertEqual(1, 2)
+
+-----------------------------------------
+Testing against multiple Python versions:
+-----------------------------------------
+
+Duplicity currently supports Python versions v2.6 or later. Duplicity uses tox
+to make it easy to test your code against multiple Python versions. Running
+tests using the commands above will automatically test code against both
+Python v2.6 and v2.7, if you have both installed on your system. It will also
+test against the versions of dependencies used by the Launchpad build system.
+You can test against a single environment, e.g.
+tox -e py26
+for example if you are working on fixing a bug, but please do a full run-tests
+before submitting a merge request.
+
+For instructions on installing Python v2.6 on newer versions of Ubuntu, see
+https://launchpad.net/~fkrull/+archive/ubuntu/deadsnakes

=== removed file 'README-TESTING'
--- README-TESTING	2017-05-14 07:17:59 +0000
+++ README-TESTING	1970-01-01 00:00:00 +0000
@@ -1,138 +0,0 @@
-# Testing duplicty
-
-## Introduction
-Duplicitys test concept bases on unit test. 
-All tests are contained in the /testing folder of the main repository. 
-
-As to see in the following sketch, there are several levels of testing duplicity and each can be used directly.
-
-                                    ┌─────────────────────┐     
-                                    │    docker image     │     
-                                    ├─────────────────────┴────┐
-                                    │                          │
-                                    │  ┌──────────────────┐    │
-                                    │  │       tox        │    │
-                                    │  └──────────────────┘    │
-                                    │            │             │
-                                    │            ▼             │
-                                    │  ┌──────────────────┐    │
-                                    │  │    unittests     │    │
-                                    │  └──────────────────┘    │
-                                    │            │             │
-                                    │            ▼             │
-                                    │  ┌──────────────────┐    │
-                                    │  │    duplicity     │    │
-                                    │  └──────────────────┘    │
-                                    │                          │
-                                    └──────────────────────────┘
-1. Testing directly using __setup.py__
-Assuming that your machine has all the required dependencies installed, you can start all the unit tests by simply typing
-
-‘setup.py test‘ 
-
-2. Using __tox__
-Tox is a generic virtualenv management and test command line tool that is used for checking your package installs correctly with different Python versions and interpreters. It 
-runs the tests in each of the environments that are configured in the tox.ini file (see root folder of the repository)
-
-Duplicity uses tox to make it easy to test your code against multiple
-environments. Running tests using the commands above will automatically test
-code against different supported environments, including the versions of
-dependencies used by the Launchpad build system.
-
-A tox run can be started simply by typing 
-
-‘tox‘
-
-from the main duplicity folder. 
-
-You can run specific tests using:
-‘tox -- -s [folder].[folder].[file].[class].[test]‘
-For example:
-‘tox -- -s testing.unit.test_selection‘
-or:
-‘tox -- -s testing.unit.test_selection.MatchingTest.test_tuple_include‘
-
-You can test against a single environment, e.g.
-‘tox -e py27‘
-for example if you are working on fixing a bug, but please do a full run-tests
-before submitting a merge request.
-
-Note: some tests require rdiff and pylint to be installed on the system for
-them to pass.
-
-Please run all tests on your branch (run-tests) before proposing a merge, to
-ensure that all tests pass. The decorator @unittest.expectedFailure can be used
-to commit a known-failing test case without breaking the test suite, for
-example to exhibit the behaviour in a bug report before it has been fixed.
-
-3. Via a __docker__ image 
-Testing on a developer's machine can be tricky. Testing duplicity requires a set of dependencies being installed and reacts sensitiviely to changes of the local python configuration. In order to make sure that such interactions do not pose any influence on executing the tests, docker is the technology of choice. 
-Along with the tests, a docker image has been created (cf. Dockerfile in root folder of repo) that ensure the following things:
-- It bases on a clean Ubunut 16.04
-- It installs all the required packages that are needed for testing
-- It then branches the repository of duplicty to the folder /duplicty/testing within the docker image
-- And installs all the required python packages (as defined in the requirements.txt)
-Therewith, the docker image provides a clean and reproducible environment for executing the tests of duplicty. 
-In order to get hands on the docker image you simply: 
-1) Install Docker on your machine (https://docs.docker.com/engine/installation/)
-2) Start the image docker run -it dernils/duplicitytest /bin/bash (if you did not use the image before, it will be downloaded automatically)
-3) At the prompt of the docker image type:
-‘cd /testing‘
-‘tox‘ 
-to start a run of the test cases. 
-
-## Dependencies for testing
-If you should prefer to execute the tests locally without using docker, the Dockerfile that is checked into the root folder of the repository contains useful information. It contains a section marked "The following packages are needed for testing duplicity". Within this section all dependencies that need to be installed on a machine to execute the test cases are identified. 
-
-## Working with test coverage
-Python makes it easy to determine, how well the tests cover the source code. 
-
-You first run the tests __under observation__ of the coverage script:
-‘coverage run setup.py test‘
-After that, a report can be generated by the use of the command:
-‘coverage html --omit="testing/*,/usr/*"‘
-
-The report will be generated and stored in the folder htmlcov. 
-
-## The wider picture - supporting containers for testing
-Testing duplicity invokes backends. The backends are the places where the backup data is actually stored (e.g. an ftp server). In order to have the highest degree of control over the testing process, backends that can be set up locally are also operated in separated docker containers. The whole test infrastructure is shown in the following picture. 
-
-┌─────────────────────┐         ┌──────────────────────────────────────────┐   
-│docker image         │         │docker image                              │   
-│dernils/duplicitytest│         │dernils/duplicity_testinfrastructure_ssh  │   
-├─────────────────────┴────┐    ├──────────────────────────────────────────┴──┐
-│                          │    │                                             │
-│  ┌──────────────────┐    │    │   ┌──────────────────┐                      │
-│  │       tox        │    │ ┌──┼──▶│       sshd       │                      │
-│  └──────────────────┘    │ │  │   └──────────────────┘                      │
-│            │             │ │  │                                             │
-│            ▼             │ │  └─────────────────────────────────────────────┘
-│  ┌──────────────────┐    │ │  ┌──────────────────────────────────────────┐   
-│  │    unittests     │    │ │  │docker image                              │   
-│  └──────────────────┘    │ │  │dernils/duplicity_testinfrastructure_ftp  │   
-│            │             │ │  ├──────────────────────────────────────────┴──┐
-│            ▼             │ │  │                                             │
-│  ┌──────────────────┐    │ │  │   ┌──────────────────┐                      │
-│  │    duplicity     │◀───┼─┴──┼──▶│    pure-ftpd     │                      │
-│  └──────────────────┘    │    │   └──────────────────┘                      │
-│            │             │    │                                             │
-└────────────┼─────────────┘    └─────────────────────────────────────────────┘
-             │                                                                 
-             │                                                                 
-             │                                                                 
-             └────────────┐                                                    
-                          │                                                    
-       Internet .─────────┼─────────.                                          
-         _.────'          │          `─────.                                   
-     _.─'                 │                 `──.                               
-   ,'                     ▼                     `.                             
-  ;             ┌──────────────────┐              :                            
-  :             │     Dropbox      │              ;                            
-   ╲            └──────────────────┘             ╱                             
-    `.                                         ,'                              
-      `──.                                 _.─'                                
-          `─────.                   _.────'                                    
-                 `─────────────────'                                           
-
-The docker images that contain the test infrastructure are defined in the folder /testing/infrastructure. There is a build script to compile the Dockerfile into actual images (build-duplicitiy-test.sh). However, as all images are also published on the docker hub, it is not necessary to build the images before starting testing. Testing can directly be started by using the script setup.sh. If the required docker images are not yet existing, locally, they will be downloaded by Docker. 
-

=== modified file 'bin/duplicity'
--- bin/duplicity	2019-05-19 15:31:10 +0000
+++ bin/duplicity	2019-05-20 08:57:58 +0000
@@ -27,6 +27,7 @@
 # Please send mail to me or the mailing list if you find bugs or have
 # any suggestions.
 
+<<<<<<< TREE
 from builtins import filter
 from builtins import next
 from builtins import map
@@ -34,21 +35,33 @@
 from builtins import object
 import duplicity.errors
 import copy
+=======
+>>>>>>> MERGE-SOURCE
 import gzip
 import os
+import sys
+import time
+import types
+import traceback
 import platform
+import statvfs
+import resource
 import re
+<<<<<<< TREE
 import resource
 from os import statvfs
 import sys
+=======
+>>>>>>> MERGE-SOURCE
 import threading
-import time
-import traceback
-import types
+from datetime import datetime
 import fasteners
 
-from datetime import datetime
-from duplicity import asyncscheduler
+from duplicity import log
+log.setup()
+
+import duplicity.errors
+
 from duplicity import collections
 from duplicity import commandline
 from duplicity import diffdir
@@ -57,17 +70,23 @@
 from duplicity import file_naming
 from duplicity import globals
 from duplicity import gpg
-from duplicity import log
 from duplicity import manifest
 from duplicity import patchdir
 from duplicity import path
-from duplicity import progress
 from duplicity import robust
 from duplicity import tempdir
+from duplicity import asyncscheduler
 from duplicity import util
-
+from duplicity import progress
+
+
+<<<<<<< TREE
 if u'--pydevd' in sys.argv or os.getenv(u'PYDEVD', None):
     import pydevd  # pylint: disable=import-error
+=======
+if '--pydevd' in sys.argv or os.getenv('PYDEVD', None):
+    import pydevd  # @UnresolvedImport
+>>>>>>> MERGE-SOURCE
     pydevd.settrace()
     # In a dev environment the path is screwed so fix it.
     base = sys.path.pop(0)
@@ -75,8 +94,6 @@
     base = os.path.sep.join(base)
     sys.path.insert(0, base)
 
-log.setup()
-
 # If exit_val is not None, exit with given value at end.
 exit_val = None
 
@@ -317,10 +334,31 @@
         return start_index, start_block, end_index, end_block
 
     def validate_block(orig_size, dest_filename):
+<<<<<<< TREE
         info = backend.query_info([dest_filename])[dest_filename]
         size = info[u'size']
         if size is None:
             return  # error querying file
+=======
+        """
+        Compare the remote size to the local one to ensure the transfer went
+        through.
+        Try to get the remote size 3 times because some systems take a little
+        time before they report the size accurately.
+        """
+        for attempt in range(0, globals.num_retries):
+            info = backend.query_info([dest_filename])[dest_filename]
+            size = info['size']
+            if size == orig_size:
+                break
+            if size is None:
+                return
+            log.Notice(_("Remote filesize %d for %s does not match local size %d, retrying.") %
+                       (0 if size is None else size,
+                        util.escape(dest_filename),
+                        orig_size))
+            time.sleep(1 + (attempt * 0.5))
+>>>>>>> MERGE-SOURCE
         if size != orig_size:
             code_extra = u"%s %d %d" % (util.escape(dest_filename), orig_size, size)
             log.FatalError(_(u"File %s was corrupted during upload.") % util.fsdecode(dest_filename),
@@ -465,7 +503,6 @@
 
     # Upload the collection summary.
     # bytes_written += write_manifest(mf, backup_type, backend)
-    mf.set_files_changed_info(diffdir.stats.get_delta_entries_file())
 
     return bytes_written
 
@@ -474,7 +511,7 @@
     u"""
     Return a fileobj opened for writing, save results as manifest
 
-    Save manifest in globals.archive_dir_path gzipped.
+    Save manifest in globals.archive_dir gzipped.
     Save them on the backend encrypted as needed.
 
     @type man_type: string
@@ -494,7 +531,7 @@
                                           manifest=True,
                                           encrypted=globals.encryption)
 
-    fh = dup_temp.get_fileobj_duppath(globals.archive_dir_path,
+    fh = dup_temp.get_fileobj_duppath(globals.archive_dir,
                                       part_man_filename,
                                       perm_man_filename,
                                       remote_man_filename)
@@ -524,7 +561,7 @@
     remote_sig_filename = file_naming.get(sig_type, encrypted=globals.encryption,
                                           gzipped=globals.compression)
 
-    fh = dup_temp.get_fileobj_duppath(globals.archive_dir_path,
+    fh = dup_temp.get_fileobj_duppath(globals.archive_dir,
                                       part_sig_filename,
                                       perm_sig_filename,
                                       remote_sig_filename,
@@ -533,8 +570,13 @@
 
 
 def full_backup(col_stats):
+<<<<<<< TREE
     u"""
     Do full backup of directory to backend, using archive_dir_path
+=======
+    """
+    Do full backup of directory to backend, using archive_dir
+>>>>>>> MERGE-SOURCE
 
     @type col_stats: CollectionStatus object
     @param col_stats: collection status
@@ -622,8 +664,13 @@
 
 
 def incremental_backup(sig_chain):
+<<<<<<< TREE
     u"""
     Do incremental backup of directory to backend, using archive_dir_path
+=======
+    """
+    Do incremental backup of directory to backend, using archive_dir
+>>>>>>> MERGE-SOURCE
 
     @rtype: void
     @return: void
@@ -836,6 +883,7 @@
     def check_signature():
         u"""Thunk run when closing volume file"""
         actual_sig = fileobj.fileobj.get_signature()
+<<<<<<< TREE
         actual_sig = u"None" if actual_sig is None else actual_sig
         sign_key = globals.gpg_profile.sign_key
         sign_key = u"None" if sign_key is None else sign_key
@@ -843,6 +891,15 @@
         if actual_sig[ofs:] != sign_key[ofs:]:
             log.FatalError(_(u"Volume was signed by key %s, not %s") %
                            (actual_sig[ofs:], sign_key[ofs:]),
+=======
+        actual_sig = "None" if actual_sig is None else actual_sig
+        sign_key = globals.gpg_profile.sign_key
+        sign_key = "None" if sign_key is None else sign_key
+        ofs = -min(len(actual_sig), len(sign_key))
+        if actual_sig[ofs:] != sign_key[ofs:]:
+            log.FatalError(_("Volume was signed by key %s, not %s") %
+                           (actual_sig[ofs:], sign_key[ofs:]),
+>>>>>>> MERGE-SOURCE
                            log.ErrorCode.unsigned_volume)
 
     fileobj.addhook(check_signature)
@@ -907,7 +964,7 @@
             col_stats.backend.delete(ext_remote)
             for fn in ext_local:
                 try:
-                    globals.archive_dir_path.append(fn).delete()
+                    globals.archive_dir.append(fn).delete()
                 except Exception:
                     pass
     else:
@@ -1011,6 +1068,7 @@
                    _(u"Rerun command with --force option to actually delete."))
 
 
+<<<<<<< TREE
 def replicate():
     u"""
     Replicate backup files from one remote to another, possibly encrypting or adding parity.
@@ -1129,6 +1187,10 @@
 
 def sync_archive(col_stats):
     u"""
+=======
+def sync_archive(col_stats):
+    """
+>>>>>>> MERGE-SOURCE
     Synchronize local archive manifest file and sig chains to remote archives.
     Copy missing files from remote to local as needed to make sure the local
     archive is synchronized to remote storage.
@@ -1165,6 +1227,33 @@
         return end_time >= target_chain.start_time and \
             start_time <= target_chain.end_time
 
+    def is_needed(filename):
+        """Indicates if the metadata file should be synced.
+
+        In full sync mode, or if there's a collection misbehavior, all files
+        are needed.
+
+        Otherwise, only the metadata for the target chain needs sync.
+        """
+        if globals.metadata_sync_mode == "full":
+            return True
+        assert globals.metadata_sync_mode == "partial"
+        parsed = file_naming.parse(filename)
+        try:
+            target_chain = col_stats.get_backup_chain_at_time(
+                globals.restore_time or dup_time.curtime)
+        except collections.CollectionsError:
+            # With zero or multiple chains at this time, do a full sync
+            return True
+        if parsed.start_time is None and parsed.end_time is None:
+            start_time = end_time = parsed.time
+        else:
+            start_time = parsed.start_time
+            end_time = parsed.end_time
+
+        return end_time >= target_chain.start_time and \
+            start_time <= target_chain.end_time
+
     def get_metafiles(filelist):
         u"""
         Return metafiles of interest from the file list.
@@ -1226,7 +1315,7 @@
         return (pr, loc_name, fn)
 
     def remove_local(fn):
-        del_name = globals.archive_dir_path.append(fn).name
+        del_name = globals.archive_dir.append(fn).name
 
         log.Notice(_(u"Deleting local %s (not authoritative at backend).") %
                    util.fsdecode(del_name))
@@ -1293,14 +1382,14 @@
         else:
             gpg.GzipWriteFile(src_iter, tdp.name, size=sys.maxsize)
         tdp.setdata()
-        tdp.move(globals.archive_dir_path.append(loc_name))
+        tdp.move(globals.archive_dir.append(loc_name))
 
     # get remote metafile list
     remlist = globals.backend.list()
     remote_metafiles, ignored, rem_needpass = get_metafiles(remlist)
 
     # get local metafile list
-    loclist = globals.archive_dir_path.listdir()
+    loclist = globals.archive_dir.listdir()
     local_metafiles, local_partials, loc_needpass = get_metafiles(loclist)
 
     # we have the list of metafiles on both sides. remote is always
@@ -1524,7 +1613,11 @@
     # determine what action we're performing and process command line
     action = commandline.ProcessCommandLine(sys.argv[1:])
 
+<<<<<<< TREE
     globals.lockpath = os.path.join(globals.archive_dir_path.name, b"lockfile")
+=======
+    globals.lockpath = os.path.join(globals.archive_dir.name, "lockfile")
+>>>>>>> MERGE-SOURCE
     globals.lockfile = fasteners.process_lock.InterProcessLock(globals.lockpath)
     log.Debug(_(u"Acquiring lockfile %s") % globals.lockpath)
     if not globals.lockfile.acquire(blocking=False):
@@ -1556,13 +1649,20 @@
 
     # get current collection status
     col_stats = collections.CollectionsStatus(globals.backend,
-                                              globals.archive_dir_path,
+                                              globals.archive_dir,
                                               action).set_values()
 
+<<<<<<< TREE
     # check archive synch with remote, fix if needed
     if action not in [u"collection-status", u"replicate"]:
         sync_archive(col_stats)
 
+=======
+    # check archive synch with remote, fix if needed
+    if action not in ["collection-status"]:
+        sync_archive(col_stats)
+
+>>>>>>> MERGE-SOURCE
     while True:
         # if we have to clean up the last partial, then col_stats are invalidated
         # and we have to start the process all over again until clean.
@@ -1591,7 +1691,7 @@
                     log.Notice(_(u"Cleaning up previous partial %s backup set, restarting." % action))
                     last_backup.delete()
                     col_stats = collections.CollectionsStatus(globals.backend,
-                                                              globals.archive_dir_path,
+                                                              globals.archive_dir,
                                                               action).set_values()
                     continue
             break
@@ -1620,21 +1720,32 @@
         verify(col_stats)
     elif action == u"list-current":
         list_current(col_stats)
+<<<<<<< TREE
     elif action == u"collection-status":
         if not globals.file_changed:
             log.PrintCollectionStatus(col_stats, True)
         else:
             log.PrintCollectionFileChangedStatus(col_stats, globals.file_changed, True)
     elif action == u"cleanup":
+=======
+    elif action == "collection-status":
+        log.PrintCollectionStatus(col_stats, True)
+    elif action == "cleanup":
+>>>>>>> MERGE-SOURCE
         cleanup(col_stats)
     elif action == u"remove-old":
         remove_old(col_stats)
     elif action == u"remove-all-but-n-full" or action == u"remove-all-inc-of-but-n-full":
         remove_all_but_n_full(col_stats)
+<<<<<<< TREE
     elif action == u"sync":
         sync_archive(col_stats)
     elif action == u"replicate":
         replicate()
+=======
+    elif action == "sync":
+        sync_archive(col_stats)
+>>>>>>> MERGE-SOURCE
     else:
         assert action == u"inc" or action == u"full", action
         # the passphrase for full and inc is used by --sign-key
@@ -1693,8 +1804,13 @@
     finally:
         tempdir.default().cleanup()
 
+<<<<<<< TREE
 
 if __name__ == u"__main__":
+=======
+
+if __name__ == "__main__":
+>>>>>>> MERGE-SOURCE
     try:
 
         #         import cProfile
@@ -1731,8 +1847,13 @@
         # For gpg errors, don't show an ugly stack trace by
         # default. But do with sufficient verbosity.
         util.release_lockfile()
+<<<<<<< TREE
         log.Info(_(u"GPG error detail: %s")
                  % util.exception_traceback())
+=======
+        log.Info(_("GPG error detail: %s")
+                 % util.exception_traceback())
+>>>>>>> MERGE-SOURCE
         log.FatalError(u"%s: %s" % (e.__class__.__name__, e.args[0]),
                        log.ErrorCode.gpg_failed,
                        e.__class__.__name__)
@@ -1741,8 +1862,13 @@
         util.release_lockfile()
         # For user errors, don't show an ugly stack trace by
         # default. But do with sufficient verbosity.
+<<<<<<< TREE
         log.Info(_(u"User error detail: %s")
                  % util.exception_traceback())
+=======
+        log.Info(_("User error detail: %s")
+                 % util.exception_traceback())
+>>>>>>> MERGE-SOURCE
         log.FatalError(u"%s: %s" % (e.__class__.__name__, util.uexc(e)),
                        log.ErrorCode.user_error,
                        e.__class__.__name__)
@@ -1751,15 +1877,24 @@
         util.release_lockfile()
         # For backend errors, don't show an ugly stack trace by
         # default. But do with sufficient verbosity.
+<<<<<<< TREE
         log.Info(_(u"Backend error detail: %s")
                  % util.exception_traceback())
+=======
+        log.Info(_("Backend error detail: %s")
+                 % util.exception_traceback())
+>>>>>>> MERGE-SOURCE
         log.FatalError(u"%s: %s" % (e.__class__.__name__, util.uexc(e)),
                        log.ErrorCode.user_error,
                        e.__class__.__name__)
 
     except Exception as e:
         util.release_lockfile()
+<<<<<<< TREE
         if u"Forced assertion for testing" in util.uexc(e):
+=======
+        if "Forced assertion for testing" in util.uexc(e):
+>>>>>>> MERGE-SOURCE
             log.FatalError(u"%s: %s" % (e.__class__.__name__, util.uexc(e)),
                            log.ErrorCode.exception,
                            e.__class__.__name__)

=== modified file 'bin/duplicity.1'
--- bin/duplicity.1	2019-05-05 12:16:14 +0000
+++ bin/duplicity.1	2019-05-20 08:57:58 +0000
@@ -21,7 +21,7 @@
 source_url target_directory
 
 .B duplicity collection-status
-.I [options] [--file-changed <relpath>]
+.I [options]
 target_url
 
 .B duplicity list-current-files
@@ -48,10 +48,6 @@
 .I [options] [--force] [--extra-clean]
 target_url
 
-.B duplicity replicate
-.I [options] [--time time]
-source_url target_url
-
 .SH DESCRIPTION
 Duplicity incrementally backs up files and folders into
 tar-format volumes encrypted with GnuPG and places them to a
@@ -168,28 +164,23 @@
 
 .TP
 .BI "verify " "[--compare-data] [--time <time>] [--file-to-restore <rel_path>] <url> <local_path>"
-Verify tests the integrity of the backup archives at the remote location by downloading each file
-and checking both that it can restore the archive and that the restored file matches the signature
-of that file stored in the backup, i.e. compares the archived file with its hash value from archival
-time. Verify does not actually restore and will not overwrite any local files. Duplicity
-will exit with a non-zero error level if any files do not match the signature stored in the archive
-for that file. On verbosity level 4 or higher, it will log a message for each file that differs
-from the stored signature. Files must be downloaded to the local machine in order to compare them.
-Verify does not compare the backed-up version of the file to the current local copy of the files
-unless the --compare-data option is used (see below).
+Restore backup contents temporarily file by file and compare against the local path's contents.
+duplicity will exit with a non-zero error level if any files are different.
+On verbosity level info (4) or higher, a message for each file that has
+changed will be logged.
 .br
 The
 .I --file-to-restore
 option restricts verify to that file or folder.
 The
 .I --time
-option allows to select a backup to verify.
+option allows to select a backup to verify against.
 The
 .I --compare-data
 option enables data comparison (see below).
 
 .TP
-.BI "collection-status " "[--file-changed <relpath>]" "<url>"
+.BI "collection-status " "<url>"
 Summarize the status of the backup repository by printing the chains
 and sets found, and the number of volumes in each.
 
@@ -252,19 +243,6 @@
 .I --force
 will be needed to delete the files instead of just listing them.
 
-.TP
-.BI "replicate " "[--time time] <source_url> <target_url>"
-Replicate backup sets from source to target backend. Files will be
-(re)-encrypted and (re)-compressed depending on normal backend
-options. Signatures and volumes will not get recomputed, thus options like
-.BI --volsize
-or
-.BI --max-blocksize
-have no effect.
-When
-.I --time time
-is given, only backup sets older than time will be replicated.
-
 .SH OPTIONS
 
 .TP
@@ -349,14 +327,8 @@
 
 .TP
 .BI --compare-data
-Enable data comparison of regular files on action verify. This conducts a
-verify as described above to verify the integrity of the backup archives,
-but additionally compares restored files to those in target_directory.
-Duplicity will not replace any files in target_directory. Duplicity will
-exit with a non-zero error level if the files do not correctly verify or
-if any files from the archive differ from those in target_directory. On
-verbosity level 4 or higher, it will log a message for each file that
-differs from its equivalent in target_directory.
+Enable data comparison of regular files on action verify.
+This is disabled by default for performance reasons.
 
 .TP
 .BI --copy-links
@@ -465,15 +437,6 @@
 argument for more information.
 
 .TP
-.BI "--file-changed " path
-This option may be given in collection-status mode, causing only
-.I path
-status to be collect instead of the entire contents of the backup archive.
-.I path
-should be given relative to the root of the directory backed up.
-
-
-.TP
 .BI "--file-prefix, --file-prefix-manifest, --file-prefix-archive, --file-prefix-signature
 Adds a prefix to all files, manifest files, archive files, and/or signature files.
 
@@ -830,6 +793,7 @@
 when uploading to S3 to ensure you kill connections to slow S3 endpoints.
 
 .TP
+<<<<<<< TREE
 .BI "--azure-blob-tier"
 Standard storage tier used for backup files (Hot|Cool|Archive).
 
@@ -853,6 +817,8 @@
 blob size exceeds 64MB. The default values is 2.
 
 .TP
+=======
+>>>>>>> MERGE-SOURCE
 .BI "--scp-command " command
 .B (only ssh pexpect backend with --use-scp enabled)
 The
@@ -962,11 +928,12 @@
 .BR "A NOTE ON SSL CERTIFICATE VERIFICATION" .
 
 .TP
-.BI --swift-storage-policy
-Use this storage policy when operating on Swift containers.
-.br
-See also
-.BR "A NOTE ON SWIFT (OPENSTACK OBJECT STORAGE) ACCESS" .
+.BI "--metadata-sync-mode " mode
+This option defaults to 'full', but you can set it to 'partial'
+to avoid syncing metadata for backup chains that you are not going to use.
+This saves time when restoring for the first time, and lets you restore an
+old backup that was encrypted with a different passphrase by supplying only
+the target passphrase.
 
 .TP
 .BI "--metadata-sync-mode " mode
@@ -1118,15 +1085,6 @@
 Formats of each of the URL schemes follow:
 
 .PP
-.B "Amazon Drive Backend"
-.PP
-.RS
-ad://some_dir
-.PP
-See also
-.B "A NOTE ON AMAZON DRIVE"
-.RE
-.PP
 .BR "Azure"
 .PP
 .RS
@@ -1291,15 +1249,6 @@
 .B "A NOTE ON SWIFT (OPENSTACK OBJECT STORAGE) ACCESS"
 .RE
 .PP
-.BR "Public Cloud Archive" " (OVH)"
-.PP
-.RS
-pca://container_name[/prefix]
-.PP
-See also
-.B "A NOTE ON PCA ACCESS"
-.RE
-.PP
 .B "Tahoe-LAFS"
 .PP
 .RS
@@ -1609,25 +1558,6 @@
 which aren't followed by 'foo'.  However, it wouldn't match /home even
 if /home/ben/1234567 existed.
 
-.SH A NOTE ON AMAZON DRIVE
-.IP 1.
-The API Keys used for Amazon Drive have not been granted production limits.
-Amazon do not say what the development limits are and are not replying to
-to requests to whitelist duplicity. A related tool, acd_cli, was demoted to
-development limits, but continues to work fine except for cases of excessive
-usage. If you experience throttling and similar issues with Amazon Drive using
-this backend, please report them to the mailing list.
-.IR
-.IP 2.
-If you previously used the
-.BI acd+acdcli
-backend, it is strongly recommended to update to the
-.BI ad
-backend instead, since it interfaces directly with Amazon Drive. You will need
-to setup the OAuth once again, but can otherwise keep your backups and config.
-.IR
-.RE
-
 .SH A NOTE ON AZURE ACCESS
 The Azure backend requires the Microsoft Azure Storage SDK for Python to be
 installed on the system.
@@ -1635,13 +1565,9 @@
 .B REQUIREMENTS
 above.
 
-It uses environment variables for authentification:
+It uses two environment variables for authentification:
 .BR AZURE_ACCOUNT_NAME " (required),"
-.BR AZURE_ACCOUNT_KEY " (optional),
-.BR AZURE_SHARED_ACCESS_SIGNATURE " (optional)."
-One of
-.BR AZURE_ACCOUNT_KEY " or"
-.BR AZURE_SHARED_ACCESS_SIGNATURE " is required."
+.BR AZURE_ACCOUNT_KEY " (required)"
 
 A container name must be a valid DNS name, conforming to the following naming
 rules:
@@ -1778,13 +1704,8 @@
 
 .SH A NOTE ON FILENAME PREFIXES
 
-Filename prefixes can be used in
-.B "multi backend "
-with
-.B "mirror "
-mode to define affinity rules. They can also be used in conjunction with
-S3 lifecycle rules to transition archive files to Glacier, while keeping
-metadata (signature and manifest files) on S3.
+Filename prefixes can be used in conjunction with S3 lifecycle rules to transition
+archive files to Glacier, while keeping metadata (signature and manifest files) on S3.
 
 Duplicity does not require access to archive files except when restoring from backup.
 
@@ -1901,8 +1822,7 @@
      "name" : "FOO",
      "value" : "bar"
     }
-   ],
-   "prefixes": ["prefix1_", "prefix2_"]
+   ]
  },
  {
   "url": "file:///path/to/dir"
@@ -2118,40 +2038,6 @@
 .B SWIFT_AUTHVERSION
 is unspecified, it will default to version 1.
 
-.SH A NOTE ON PCA ACCESS
-PCA is a long-term data archival solution by OVH. It runs a slightly modified
-version of Openstack Swift introducing latency in the data retrieval process.
-It is a good pick for a
-.BR "multi backend "
-configuration where receiving volumes while an other backend is used to store
-manifests and signatures.
-
-.br
-The backend requires python-switclient to be installed on the system.
-python-keystoneclient is also needed to interact with OpenStack's Keystone
-Identity service.
-See
-.B REQUIREMENTS
-above.
-
-It uses following environment variables for authentification:
-.BR PCA_USERNAME " (required),"
-.BR PCA_PASSWORD " (required),"
-.BR PCA_AUTHURL " (required),"
-.BR PCA_USERID " (optional),"
-.BR PCA_TENANTID " (optional, but either the tenant name or tenant id must be supplied)"
-.BR PCA_REGIONNAME " (optional),"
-.BR PCA_TENANTNAME " (optional, but either the tenant name or tenant id must be supplied)"
-
-If the user was previously authenticated, the following environment
-variables can be used instead:
-.BR PCA_PREAUTHURL " (required),"
-.BR PCA_PREAUTHTOKEN " (required)"
-
-If
-.B PCA_AUTHVERSION
-is unspecified, it will default to version 2.
-
 .SH A NOTE ON MEDIAFIRE BACKEND
 This backend requires
 .B mediafire
@@ -2262,13 +2148,6 @@
 
 Some backends also require additional components (probably available as packages for your specific platform):
 .TP
-.BR "Amazon Drive backend"
-.B python-requests
-- http://python-requests.org
-.br
-.B python-requests-oauthlib
-- https://github.com/requests/requests-oauthlib
-.TP
 .BR "azure backend" " (Azure Blob Storage Service)"
 .B Microsoft Azure Storage SDK for Python
 - https://pypi.python.org/pypi/azure-storage/

=== modified file 'debian/control'
=== renamed file 'docs/Makefile' => 'docs/Makefile.THIS'
=== removed directory 'docs/_static'
=== removed directory 'docs/_templates'
=== renamed file 'docs/conf.py' => 'docs/conf.py.THIS'
=== removed file 'docs/duplicity.asyncscheduler.rst'
--- docs/duplicity.asyncscheduler.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.asyncscheduler.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.asyncscheduler module
-===============================
-
-.. automodule:: duplicity.asyncscheduler
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backend.rst'
--- docs/duplicity.backend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backend module
-========================
-
-.. automodule:: duplicity.backend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.azurebackend.rst'
--- docs/duplicity.backends.azurebackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.azurebackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.azurebackend module
-======================================
-
-.. automodule:: duplicity.backends.azurebackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.b2backend.rst'
--- docs/duplicity.backends.b2backend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.b2backend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.b2backend module
-===================================
-
-.. automodule:: duplicity.backends.b2backend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.botobackend.rst'
--- docs/duplicity.backends.botobackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.botobackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.botobackend module
-=====================================
-
-.. automodule:: duplicity.backends.botobackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.cfbackend.rst'
--- docs/duplicity.backends.cfbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.cfbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.cfbackend module
-===================================
-
-.. automodule:: duplicity.backends.cfbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.dpbxbackend.rst'
--- docs/duplicity.backends.dpbxbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.dpbxbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.dpbxbackend module
-=====================================
-
-.. automodule:: duplicity.backends.dpbxbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.gdocsbackend.rst'
--- docs/duplicity.backends.gdocsbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.gdocsbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.gdocsbackend module
-======================================
-
-.. automodule:: duplicity.backends.gdocsbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.giobackend.rst'
--- docs/duplicity.backends.giobackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.giobackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.giobackend module
-====================================
-
-.. automodule:: duplicity.backends.giobackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.hsibackend.rst'
--- docs/duplicity.backends.hsibackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.hsibackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.hsibackend module
-====================================
-
-.. automodule:: duplicity.backends.hsibackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.hubicbackend.rst'
--- docs/duplicity.backends.hubicbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.hubicbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.hubicbackend module
-======================================
-
-.. automodule:: duplicity.backends.hubicbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.imapbackend.rst'
--- docs/duplicity.backends.imapbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.imapbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.imapbackend module
-=====================================
-
-.. automodule:: duplicity.backends.imapbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.lftpbackend.rst'
--- docs/duplicity.backends.lftpbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.lftpbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.lftpbackend module
-=====================================
-
-.. automodule:: duplicity.backends.lftpbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.localbackend.rst'
--- docs/duplicity.backends.localbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.localbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.localbackend module
-======================================
-
-.. automodule:: duplicity.backends.localbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.mediafirebackend.rst'
--- docs/duplicity.backends.mediafirebackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.mediafirebackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.mediafirebackend module
-==========================================
-
-.. automodule:: duplicity.backends.mediafirebackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.megabackend.rst'
--- docs/duplicity.backends.megabackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.megabackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.megabackend module
-=====================================
-
-.. automodule:: duplicity.backends.megabackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.multibackend.rst'
--- docs/duplicity.backends.multibackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.multibackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.multibackend module
-======================================
-
-.. automodule:: duplicity.backends.multibackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.ncftpbackend.rst'
--- docs/duplicity.backends.ncftpbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.ncftpbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.ncftpbackend module
-======================================
-
-.. automodule:: duplicity.backends.ncftpbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.onedrivebackend.rst'
--- docs/duplicity.backends.onedrivebackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.onedrivebackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.onedrivebackend module
-=========================================
-
-.. automodule:: duplicity.backends.onedrivebackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.par2backend.rst'
--- docs/duplicity.backends.par2backend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.par2backend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.par2backend module
-=====================================
-
-.. automodule:: duplicity.backends.par2backend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.pydrivebackend.rst'
--- docs/duplicity.backends.pydrivebackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.pydrivebackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.pydrivebackend module
-========================================
-
-.. automodule:: duplicity.backends.pydrivebackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== renamed file 'docs/duplicity.backends.pyrax_identity.hubic.rst' => 'docs/duplicity.backends.pyrax_identity.hubic.rst.THIS'
=== renamed file 'docs/duplicity.backends.pyrax_identity.rst' => 'docs/duplicity.backends.pyrax_identity.rst.THIS'
=== renamed file 'docs/duplicity.backends.rst' => 'docs/duplicity.backends.rst.THIS'
=== removed file 'docs/duplicity.backends.rsyncbackend.rst'
--- docs/duplicity.backends.rsyncbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.rsyncbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.rsyncbackend module
-======================================
-
-.. automodule:: duplicity.backends.rsyncbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== renamed file 'docs/duplicity.backends.ssh_paramiko_backend.rst' => 'docs/duplicity.backends.ssh_paramiko_backend.rst.THIS'
=== renamed file 'docs/duplicity.backends.ssh_pexpect_backend.rst' => 'docs/duplicity.backends.ssh_pexpect_backend.rst.THIS'
=== removed file 'docs/duplicity.backends.swiftbackend.rst'
--- docs/duplicity.backends.swiftbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.swiftbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.swiftbackend module
-======================================
-
-.. automodule:: duplicity.backends.swiftbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.sxbackend.rst'
--- docs/duplicity.backends.sxbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.sxbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.sxbackend module
-===================================
-
-.. automodule:: duplicity.backends.sxbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.tahoebackend.rst'
--- docs/duplicity.backends.tahoebackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.tahoebackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.tahoebackend module
-======================================
-
-.. automodule:: duplicity.backends.tahoebackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.backends.webdavbackend.rst'
--- docs/duplicity.backends.webdavbackend.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.backends.webdavbackend.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.backends.webdavbackend module
-=======================================
-
-.. automodule:: duplicity.backends.webdavbackend
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== renamed file 'docs/duplicity.cached_ops.rst' => 'docs/duplicity.cached_ops.rst.THIS'
=== removed file 'docs/duplicity.collections.rst'
--- docs/duplicity.collections.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.collections.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.collections module
-============================
-
-.. automodule:: duplicity.collections
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.commandline.rst'
--- docs/duplicity.commandline.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.commandline.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.commandline module
-============================
-
-.. automodule:: duplicity.commandline
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.diffdir.rst'
--- docs/duplicity.diffdir.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.diffdir.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.diffdir module
-========================
-
-.. automodule:: duplicity.diffdir
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== renamed file 'docs/duplicity.dup_temp.rst' => 'docs/duplicity.dup_temp.rst.THIS'
=== renamed file 'docs/duplicity.dup_threading.rst' => 'docs/duplicity.dup_threading.rst.THIS'
=== renamed file 'docs/duplicity.dup_time.rst' => 'docs/duplicity.dup_time.rst.THIS'
=== removed file 'docs/duplicity.errors.rst'
--- docs/duplicity.errors.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.errors.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.errors module
-=======================
-
-.. automodule:: duplicity.errors
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== renamed file 'docs/duplicity.file_naming.rst' => 'docs/duplicity.file_naming.rst.THIS'
=== removed file 'docs/duplicity.filechunkio.rst'
--- docs/duplicity.filechunkio.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.filechunkio.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.filechunkio module
-============================
-
-.. automodule:: duplicity.filechunkio
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.globals.rst'
--- docs/duplicity.globals.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.globals.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.globals module
-========================
-
-.. automodule:: duplicity.globals
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.globmatch.rst'
--- docs/duplicity.globmatch.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.globmatch.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.globmatch module
-==========================
-
-.. automodule:: duplicity.globmatch
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.gpg.rst'
--- docs/duplicity.gpg.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.gpg.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.gpg module
-====================
-
-.. automodule:: duplicity.gpg
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.gpginterface.rst'
--- docs/duplicity.gpginterface.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.gpginterface.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.gpginterface module
-=============================
-
-.. automodule:: duplicity.gpginterface
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.lazy.rst'
--- docs/duplicity.lazy.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.lazy.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.lazy module
-=====================
-
-.. automodule:: duplicity.lazy
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.librsync.rst'
--- docs/duplicity.librsync.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.librsync.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.librsync module
-=========================
-
-.. automodule:: duplicity.librsync
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.log.rst'
--- docs/duplicity.log.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.log.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.log module
-====================
-
-.. automodule:: duplicity.log
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.manifest.rst'
--- docs/duplicity.manifest.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.manifest.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.manifest module
-=========================
-
-.. automodule:: duplicity.manifest
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.patchdir.rst'
--- docs/duplicity.patchdir.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.patchdir.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.patchdir module
-=========================
-
-.. automodule:: duplicity.patchdir
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.path.rst'
--- docs/duplicity.path.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.path.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.path module
-=====================
-
-.. automodule:: duplicity.path
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.progress.rst'
--- docs/duplicity.progress.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.progress.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.progress module
-=========================
-
-.. automodule:: duplicity.progress
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.robust.rst'
--- docs/duplicity.robust.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.robust.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.robust module
-=======================
-
-.. automodule:: duplicity.robust
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== renamed file 'docs/duplicity.rst' => 'docs/duplicity.rst.THIS'
=== removed file 'docs/duplicity.selection.rst'
--- docs/duplicity.selection.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.selection.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.selection module
-==========================
-
-.. automodule:: duplicity.selection
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.statistics.rst'
--- docs/duplicity.statistics.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.statistics.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.statistics module
-===========================
-
-.. automodule:: duplicity.statistics
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.tarfile.rst'
--- docs/duplicity.tarfile.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.tarfile.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.tarfile module
-========================
-
-.. automodule:: duplicity.tarfile
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.tempdir.rst'
--- docs/duplicity.tempdir.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.tempdir.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.tempdir module
-========================
-
-.. automodule:: duplicity.tempdir
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/duplicity.util.rst'
--- docs/duplicity.util.rst	2018-07-24 16:17:12 +0000
+++ docs/duplicity.util.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-duplicity.util module
-=====================
-
-.. automodule:: duplicity.util
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== renamed file 'docs/index.rst' => 'docs/index.rst.THIS'
=== renamed file 'docs/make.bat' => 'docs/make.bat.THIS'
=== renamed file 'docs/testing.functional.rst' => 'docs/testing.functional.rst.THIS'
=== renamed file 'docs/testing.functional.test_badupload.rst' => 'docs/testing.functional.test_badupload.rst.THIS'
=== renamed file 'docs/testing.functional.test_cleanup.rst' => 'docs/testing.functional.test_cleanup.rst.THIS'
=== renamed file 'docs/testing.functional.test_final.rst' => 'docs/testing.functional.test_final.rst.THIS'
=== renamed file 'docs/testing.functional.test_log.rst' => 'docs/testing.functional.test_log.rst.THIS'
=== renamed file 'docs/testing.functional.test_rdiffdir.rst' => 'docs/testing.functional.test_rdiffdir.rst.THIS'
=== renamed file 'docs/testing.functional.test_restart.rst' => 'docs/testing.functional.test_restart.rst.THIS'
=== renamed file 'docs/testing.functional.test_selection.rst' => 'docs/testing.functional.test_selection.rst.THIS'
=== renamed file 'docs/testing.functional.test_verify.rst' => 'docs/testing.functional.test_verify.rst.THIS'
=== removed file 'docs/testing.overrides.gettext.rst'
--- docs/testing.overrides.gettext.rst	2018-07-24 16:17:12 +0000
+++ docs/testing.overrides.gettext.rst	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-testing.overrides.gettext module
-================================
-
-.. automodule:: testing.overrides.gettext
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== removed file 'docs/testing.overrides.rst'
--- docs/testing.overrides.rst	2018-07-24 16:17:12 +0000
+++ docs/testing.overrides.rst	1970-01-01 00:00:00 +0000
@@ -1,17 +0,0 @@
-testing.overrides package
-=========================
-
-Submodules
-----------
-
-.. toctree::
-
-   testing.overrides.gettext
-
-Module contents
----------------
-
-.. automodule:: testing.overrides
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== renamed file 'docs/testing.rst' => 'docs/testing.rst.THIS'
=== renamed file 'docs/testing.test_code.rst' => 'docs/testing.test_code.rst.THIS'
=== removed file 'docs/testing.unit.rst'
--- docs/testing.unit.rst	2018-07-24 16:17:12 +0000
+++ docs/testing.unit.rst	1970-01-01 00:00:00 +0000
@@ -1,34 +0,0 @@
-testing.unit package
-====================
-
-Submodules
-----------
-
-.. toctree::
-
-   testing.unit.test_backend
-   testing.unit.test_backend_instance
-   testing.unit.test_collections
-   testing.unit.test_diffdir
-   testing.unit.test_dup_temp
-   testing.unit.test_dup_time
-   testing.unit.test_file_naming
-   testing.unit.test_globmatch
-   testing.unit.test_gpg
-   testing.unit.test_gpginterface
-   testing.unit.test_lazy
-   testing.unit.test_manifest
-   testing.unit.test_patchdir
-   testing.unit.test_path
-   testing.unit.test_selection
-   testing.unit.test_statistics
-   testing.unit.test_tarfile
-   testing.unit.test_tempdir
-
-Module contents
----------------
-
-.. automodule:: testing.unit
-    :members:
-    :undoc-members:
-    :show-inheritance:

=== renamed file 'docs/testing.unit.test_backend.rst' => 'docs/testing.unit.test_backend.rst.THIS'
=== renamed file 'docs/testing.unit.test_backend_instance.rst' => 'docs/testing.unit.test_backend_instance.rst.THIS'
=== renamed file 'docs/testing.unit.test_collections.rst' => 'docs/testing.unit.test_collections.rst.THIS'
=== renamed file 'docs/testing.unit.test_diffdir.rst' => 'docs/testing.unit.test_diffdir.rst.THIS'
=== renamed file 'docs/testing.unit.test_dup_temp.rst' => 'docs/testing.unit.test_dup_temp.rst.THIS'
=== renamed file 'docs/testing.unit.test_dup_time.rst' => 'docs/testing.unit.test_dup_time.rst.THIS'
=== renamed file 'docs/testing.unit.test_file_naming.rst' => 'docs/testing.unit.test_file_naming.rst.THIS'
=== renamed file 'docs/testing.unit.test_globmatch.rst' => 'docs/testing.unit.test_globmatch.rst.THIS'
=== renamed file 'docs/testing.unit.test_gpg.rst' => 'docs/testing.unit.test_gpg.rst.THIS'
=== renamed file 'docs/testing.unit.test_gpginterface.rst' => 'docs/testing.unit.test_gpginterface.rst.THIS'
=== renamed file 'docs/testing.unit.test_lazy.rst' => 'docs/testing.unit.test_lazy.rst.THIS'
=== renamed file 'docs/testing.unit.test_manifest.rst' => 'docs/testing.unit.test_manifest.rst.THIS'
=== renamed file 'docs/testing.unit.test_patchdir.rst' => 'docs/testing.unit.test_patchdir.rst.THIS'
=== renamed file 'docs/testing.unit.test_path.rst' => 'docs/testing.unit.test_path.rst.THIS'
=== renamed file 'docs/testing.unit.test_selection.rst' => 'docs/testing.unit.test_selection.rst.THIS'
=== renamed file 'docs/testing.unit.test_statistics.rst' => 'docs/testing.unit.test_statistics.rst.THIS'
=== renamed file 'docs/testing.unit.test_tarfile.rst' => 'docs/testing.unit.test_tarfile.rst.THIS'
=== renamed file 'docs/testing.unit.test_tempdir.rst' => 'docs/testing.unit.test_tempdir.rst.THIS'
=== modified file 'duplicity/_librsyncmodule.c'
--- duplicity/_librsyncmodule.c	2018-12-05 03:48:47 +0000
+++ duplicity/_librsyncmodule.c	2019-05-20 08:57:58 +0000
@@ -330,7 +330,7 @@
   fd = dup(fd);
   if (fd == -1) {
     char buf[256];
-    (void)strerror_r(errno, buf, sizeof(buf));
+    strerror_r(errno, buf, sizeof(buf));
     PyErr_SetString(PyExc_TypeError, buf);
     return NULL;
   }

=== modified file 'duplicity/backend.py'
--- duplicity/backend.py	2018-11-29 19:00:15 +0000
+++ duplicity/backend.py	2019-05-20 08:57:58 +0000
@@ -455,8 +455,13 @@
         else:
             return commandline
 
+<<<<<<< TREE
     def __subprocess_popen(self, args):
         u"""
+=======
+    def __subprocess_popen(self, args):
+        """
+>>>>>>> MERGE-SOURCE
         For internal use.
         Execute the given command line, interpreted as a shell command.
         Returns int Exitcode, string StdOut, string StdErr
@@ -480,6 +485,7 @@
 
         Raise a BackendException on failure.
         """
+<<<<<<< TREE
         import shlex
 
         if isinstance(commandline, (list, tuple)):
@@ -493,6 +499,21 @@
         log.Info(_(u"Reading results of '%s'") % logstr)
 
         result, stdout, stderr = self.__subprocess_popen(args)
+=======
+        import shlex
+
+        if isinstance(commandline, (types.ListType, types.TupleType)):
+            logstr = ' '.join(commandline)
+            args = commandline
+        else:
+            logstr = commandline
+            args = shlex.split(commandline)
+
+        logstr = self.munge_password(logstr)
+        log.Info(_("Reading results of '%s'") % logstr)
+
+        result, stdout, stderr = self.__subprocess_popen(args)
+>>>>>>> MERGE-SOURCE
         if result != 0:
             try:
                 ignores = self.popen_breaks[args[0]]
@@ -500,8 +521,13 @@
                 u""" ignore a predefined set of error codes """
                 return 0, u'', u''
             except (KeyError, ValueError):
+<<<<<<< TREE
                 raise BackendException(u"Error running '%s': returned %d, with output:\n%s" %
                                        (logstr, result, stdout.decode() + u'\n' + stderr.decode()))
+=======
+                raise BackendException("Error running '%s': returned %d, with output:\n%s" %
+                                       (logstr, result, stdout + '\n' + stderr))
+>>>>>>> MERGE-SOURCE
         return result, stdout, stderr
 
 
@@ -573,7 +599,11 @@
                 # There shouldn't be any encoding errors for files we care
                 # about, since duplicity filenames are ascii.  But user files
                 # may be in the same directory.  So just replace characters.
+<<<<<<< TREE
                 return util.fsencode(filename)
+=======
+                return filename.encode(globals.fsencoding, 'replace')
+>>>>>>> MERGE-SOURCE
             else:
                 return filename
 

=== modified file 'duplicity/backends/_cf_pyrax.py'
--- duplicity/backends/_cf_pyrax.py	2018-11-29 19:00:15 +0000
+++ duplicity/backends/_cf_pyrax.py	2019-05-20 08:57:58 +0000
@@ -71,6 +71,7 @@
 
         self.client_exc = pyrax.exceptions.ClientException
         self.nso_exc = pyrax.exceptions.NoSuchObject
+<<<<<<< TREE
 
         # query rackspace for the specified container name
         try:
@@ -90,6 +91,27 @@
                                u"You may be using a read-only user that can view but not create containers.\n" +
                                u"Please check your credentials and permissions.",
                                log.ErrorCode.backend_permission_denied)
+=======
+
+        # query rackspace for the specified container name
+        try:
+            self.container = pyrax.cloudfiles.get_container(container)
+        except pyrax.exceptions.Forbidden as e:
+            log.FatalError("%s : %s \n" % (e.__class__.__name__, util.uexc(e)) +
+                           "Container may exist, but access was denied.\n" +
+                           "If this container exists, please check its X-Container-Read/Write headers.\n" +
+                           "Otherwise, please check your credentials and permissions.",
+                           log.ErrorCode.backend_permission_denied)
+        except pyrax.exceptions.NoSuchContainer as e:
+            try:
+                self.container = pyrax.cloudfiles.create_container(container)
+            except pyrax.exceptions.Forbidden as e:
+                log.FatalError("%s : %s \n" % (e.__class__.__name__, util.uexc(e)) +
+                               "Container does not exist, but creation was denied.\n" +
+                               "You may be using a read-only user that can view but not create containers.\n" +
+                               "Please check your credentials and permissions.",
+                               log.ErrorCode.backend_permission_denied)
+>>>>>>> MERGE-SOURCE
 
     def _error_code(self, operation, e):
         if isinstance(e, self.nso_exc):

=== added file 'duplicity/backends/acdclibackend.py.OTHER'
--- duplicity/backends/acdclibackend.py.OTHER	1970-01-01 00:00:00 +0000
+++ duplicity/backends/acdclibackend.py.OTHER	2019-05-20 08:57:58 +0000
@@ -0,0 +1,151 @@
+# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-
+#
+# Copyright 2015 Stefan Breunig <stefan-duplicity@xxxxxxxxxxx>
+# Copyright 2015 Malay Shah <malays@xxxxxxxxx>
+# Based on the backend ncftpbackend.py
+#
+# This file is part of duplicity.
+#
+# Duplicity is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# Duplicity is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with duplicity; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import os.path
+import urllib
+import string
+import json
+
+import duplicity.backend
+from duplicity import globals
+from duplicity import log
+from duplicity.errors import *  # @UnusedWildImport
+from duplicity import tempdir
+
+
+class ACDBackend(duplicity.backend.Backend):
+    acd_cmd = 'acd_cli'
+    """Connect to remote store using acd_cli"""
+    def __init__(self, parsed_url):
+        duplicity.backend.Backend.__init__(self, parsed_url)
+
+        # we expect an error return, so go low-level and ignore it
+        try:
+            p = os.popen(self.acd_cmd + " version")
+            fout = p.read()
+            ret = p.close()
+        except Exception:
+            pass
+        # the expected error is 0
+        if ret is not None:
+            log.FatalError(self.acd_cmd + " not found:  Please install acd_cli",
+                           log.ErrorCode.backend_not_found)
+
+        self.parsed_url = parsed_url
+        self.url_string = duplicity.backend.strip_auth_from_url(self.parsed_url)
+
+        # Use an explicit directory name.
+        if self.url_string[-1] != '/':
+            self.url_string += '/'
+
+        self.subprocess_popen(self.acd_cmd + " sync")
+
+        # Initialize remote directory
+        remote_path = urllib.unquote(self.parsed_url.path.replace('///', '/')).rstrip()
+        commandline = self.acd_cmd + " ls '%s'" % (remote_path)
+        try:
+            self.subprocess_popen(commandline)
+        except BackendException as e:
+            if e.code == 50:  # Remote directory not there, create a new one
+                commandline = self.acd_cmd + " mkdir '%s'" % remote_path
+                self.subprocess_popen(commandline)
+
+    def _put(self, source_path, remote_filename=None):
+        """Transfer source_path to remote_filename"""
+        if not remote_filename:
+            remote_filename = source_path.get_filename()
+
+        # WORKAROUND for acd_cli: cannot specify remote filename
+        # Link tmp file to the desired remote filename locally and upload
+        remote_path = urllib.unquote(self.parsed_url.path.replace('///', '/'))
+        local_real_duplicity_file = os.path.join(os.path.dirname(source_path.name), remote_filename.rstrip())
+
+        deleteFile = False
+        if(source_path.name != local_real_duplicity_file):
+            try:
+                os.symlink(source_path.name, local_real_duplicity_file)
+                deleteFile = True
+            except IOError as e:
+                log.FatalError("Unable to copy " + source_path.name + " to " + local_real_duplicity_file)
+
+        commandline = self.acd_cmd + " upload --force --overwrite '%s' '%s'" % \
+            (local_real_duplicity_file, remote_path)
+
+        try:
+            l = self.subprocess_popen(commandline)
+        finally:
+            if (deleteFile):
+                try:
+                    os.remove(local_real_duplicity_file)
+                except OSError as e:
+                    log.FatalError("Unable to remove file %s" % e)
+
+    def _get(self, remote_filename, local_path):
+        """Get remote filename, saving it to local_path"""
+        remote_path = os.path.join(urllib.unquote(self.parsed_url.path.replace('///', '/')), remote_filename).rstrip()
+        local_dir = os.path.dirname(local_path.name)
+        local_filename = os.path.basename(local_path.name)
+        commandline = self.acd_cmd + " download '%s' '%s'" % \
+            (remote_path, local_dir)
+        l = self.subprocess_popen(commandline)
+
+        # Keep the remote filename and move the file over
+        try:
+            os.rename(os.path.join(local_dir, remote_filename), local_path.name)
+        except IOError as e:
+            log.FatalError("Unable to move file %s" % e)
+
+        local_path.setdata()
+        if not local_path.exists():
+            raise BackendException("File %s not found" % local_path.name)
+
+    def _query(self, remote_filename):
+        remote_path = os.path.join(urllib.unquote(self.parsed_url.path.replace('///', '/')), remote_filename).rstrip()
+        commandline = self.acd_cmd + " metadata '%s'" % remote_path
+        node = self.subprocess_popen(commandline)
+        if (node[0] == 0 and node[1]):
+            try:
+                size = json.loads(node[1])['contentProperties']['size']
+                return {'size': size}
+            except ValueError as e:
+                raise BackendException('Malformed JSON: expected "contentProperties->size" member in %s' % node[1])
+        return {'size': -1}
+
+    def _list(self):
+        """List files in directory"""
+        def dir_split(str):
+            if (str):
+                return str.split()[2]
+            else:
+                return None
+        commandline = self.acd_cmd + " ls '%s'" % self.parsed_url.path.replace('///', '/')
+        l = self.subprocess_popen(commandline)
+        return [x for x in map(dir_split, l[1].split('\n')) if x]
+
+    def _delete(self, remote_filename):
+        """Delete remote_filename"""
+        remote_file_path = os.path.join(urllib.unquote(self.parsed_url.path.replace('///', '/')),
+                                        remote_filename).rstrip()
+        commandline = self.acd_cmd + " rm '%s'" % (remote_file_path)
+        self.subprocess_popen(commandline)
+
+duplicity.backend.register_backend("acd+acdcli", ACDBackend)

=== renamed file 'duplicity/backends/adbackend.py' => 'duplicity/backends/adbackend.py.THIS'
=== modified file 'duplicity/backends/azurebackend.py'
--- duplicity/backends/azurebackend.py	2019-03-10 22:58:32 +0000
+++ duplicity/backends/azurebackend.py	2019-05-20 08:57:58 +0000
@@ -23,7 +23,6 @@
 import os
 
 import duplicity.backend
-from duplicity import globals
 from duplicity import log
 from duplicity.errors import BackendException
 
@@ -46,11 +45,15 @@
                 self.AzureConflictError = azure.WindowsAzureConflictError
             else:
                 # v1.0.0 and above
+<<<<<<< TREE
                 import azure.storage.blob
                 if hasattr(azure.storage.blob, u'BlobService'):
                     from azure.storage.blob import BlobService
                 else:
                     from azure.storage.blob.blockblobservice import BlockBlobService as BlobService
+=======
+                from azure.storage.blob import BlobService
+>>>>>>> MERGE-SOURCE
                 self.AzureMissingResourceError = azure.common.AzureMissingResourceHttpError
                 self.AzureConflictError = azure.common.AzureConflictHttpError
         except ImportError as e:
@@ -58,7 +61,15 @@
 Azure backend requires Microsoft Azure Storage SDK for Python (https://pypi.python.org/pypi/azure-storage/).
 Exception: %s""" % str(e))
 
+        if 'AZURE_ACCOUNT_NAME' not in os.environ:
+            raise BackendException('AZURE_ACCOUNT_NAME environment variable not set.')
+        if 'AZURE_ACCOUNT_KEY' not in os.environ:
+            raise BackendException('AZURE_ACCOUNT_KEY environment variable not set.')
+        self.blob_service = BlobService(account_name=os.environ['AZURE_ACCOUNT_NAME'],
+                                        account_key=os.environ['AZURE_ACCOUNT_KEY'])
+
         # TODO: validate container name
+<<<<<<< TREE
         self.container = parsed_url.path.lstrip(u'/')
 
         if u'AZURE_ACCOUNT_NAME' not in os.environ:
@@ -104,6 +115,9 @@
                 self.blob_service._BLOB_MAX_CHUNK_DATA_SIZE = globals.azure_max_block_size
 
     def _create_container(self):
+=======
+        self.container = parsed_url.path.lstrip('/')
+>>>>>>> MERGE-SOURCE
         try:
             self.blob_service.create_container(self.container, fail_on_exist=True)
         except self.AzureConflictError:
@@ -115,15 +129,15 @@
                            log.ErrorCode.connection_failed)
 
     def _put(self, source_path, remote_filename):
+<<<<<<< TREE
         kwargs = {}
         if globals.azure_max_connections:
             kwargs[u'max_connections'] = globals.azure_max_connections
 
+=======
+>>>>>>> MERGE-SOURCE
         # https://azure.microsoft.com/en-us/documentation/articles/storage-python-how-to-use-blob-storage/#upload-a-blob-into-a-container
-        try:
-            self.blob_service.create_blob_from_path(self.container, remote_filename, source_path.name, **kwargs)
-        except AttributeError:  # Old versions use a different method name
-            self.blob_service.put_block_blob_from_path(self.container, remote_filename, source_path.name, **kwargs)
+        self.blob_service.put_block_blob_from_path(self.container, remote_filename, source_path.name)
 
         self._set_tier(remote_filename)
 
@@ -156,16 +170,24 @@
 
     def _query(self, filename):
         prop = self.blob_service.get_blob_properties(self.container, filename)
+<<<<<<< TREE
         try:
             info = {u'size': int(prop.properties.content_length)}
         except AttributeError:
             # old versions directly returned the properties
             info = {u'size': int(prop[u'content-length'])}
         return info
+=======
+        return {'size': int(prop['content-length'])}
+>>>>>>> MERGE-SOURCE
 
     def _error_code(self, operation, e):
         if isinstance(e, self.AzureMissingResourceError):
             return log.ErrorCode.backend_not_found
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u'azure', AzureBackend)
+=======
+duplicity.backend.register_backend('azure', AzureBackend)
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/b2backend.py'
--- duplicity/backends/b2backend.py	2019-03-10 22:58:32 +0000
+++ duplicity/backends/b2backend.py	2019-05-20 08:57:58 +0000
@@ -27,11 +27,15 @@
 from builtins import object
 import os
 import hashlib
+<<<<<<< TREE
 from urllib.parse import quote_plus  # pylint: disable=import-error
+=======
+>>>>>>> MERGE-SOURCE
 
 import duplicity.backend
 from duplicity.errors import BackendException, FatalBackendException
 from duplicity import log
+<<<<<<< TREE
 from duplicity import progress
 
 
@@ -50,6 +54,29 @@
 
     def __exit__(self, exc_type, exc_val, exc_tb):
         pass
+=======
+from duplicity import progress
+
+
+def progress_listener_factory():
+    u"""
+    Returns progress instance suitable for passing to b2.api.B2Api
+    methods.
+    """
+    class B2ProgressListener(b2.progress.AbstractProgressListener):
+        def __init__(self):
+            super(B2ProgressListener, self).__init__()
+
+        def set_total_bytes(self, total_byte_count):
+            self.total_byte_count = total_byte_count
+
+        def bytes_completed(self, byte_count):
+            progress.report_transfer(byte_count, self.total_byte_count)
+
+        def close(self):
+            super(B2ProgressListener, self).close()
+    return B2ProgressListener()
+>>>>>>> MERGE-SOURCE
 
 
 class B2Backend(duplicity.backend.Backend):
@@ -63,6 +90,7 @@
         """
         duplicity.backend.Backend.__init__(self, parsed_url)
 
+<<<<<<< TREE
         # Import B2 API
         try:
             global b2
@@ -78,6 +106,24 @@
         self.parsed_url.hostname = u'B2'
 
         account_id = parsed_url.username
+=======
+        # Import B2 API
+        try:
+            global b2
+            import b2
+            import b2.api
+            import b2.account_info
+            import b2.download_dest
+            import b2.file_version
+            import b2.progress
+        except ImportError:
+            raise BackendException('B2 backend requires B2 Python APIs (pip install b2)')
+
+        self.service = b2.api.B2Api(b2.account_info.InMemoryAccountInfo())
+        self.parsed_url.hostname = 'B2'
+
+        account_id = parsed_url.username
+>>>>>>> MERGE-SOURCE
         account_key = self.get_password()
 
         self.url_parts = [
@@ -87,13 +133,23 @@
             self.username = self.url_parts.pop(0)
             bucket_name = self.url_parts.pop(0)
         else:
+<<<<<<< TREE
             raise BackendException(u"B2 requires a bucket name")
         self.path = u"".join([url_part + u"/" for url_part in self.url_parts])
         self.service.authorize_account(u'production', account_id, account_key)
 
         log.Log(u"B2 Backend (path= %s, bucket= %s, minimum_part_size= %s)" %
                 (self.path, bucket_name, self.service.account_info.get_minimum_part_size()), log.INFO)
+=======
+            raise BackendException("B2 requires a bucket name")
+        self.path = "".join([url_part + "/" for url_part in self.url_parts])
+        self.service.authorize_account('production', account_id, account_key)
+
+        log.Log("B2 Backend (path= %s, bucket= %s, minimum_part_size= %s)" %
+                (self.path, bucket_name, self.service.account_info.get_minimum_part_size()), log.INFO)
+>>>>>>> MERGE-SOURCE
         try:
+<<<<<<< TREE
             self.bucket = self.service.get_bucket_by_name(bucket_name)
             log.Log(u"Bucket found", log.INFO)
         except b2.exception.NonExistentBucket:
@@ -102,23 +158,46 @@
                 self.bucket = self.service.create_bucket(bucket_name, u'allPrivate')
             except:
                 raise FatalBackendException(u"Bucket cannot be created")
+=======
+            self.bucket = self.service.get_bucket_by_name(bucket_name)
+            log.Log("Bucket found", log.INFO)
+        except b2.exception.NonExistentBucket:
+            try:
+                log.Log("Bucket not found, creating one", log.INFO)
+                self.bucket = self.service.create_bucket(bucket_name, 'allPrivate')
+            except:
+                raise FatalBackendException("Bucket cannot be created")
+>>>>>>> MERGE-SOURCE
 
     def _get(self, remote_filename, local_path):
         u"""
         Download remote_filename to local_path
         """
+<<<<<<< TREE
         log.Log(u"Get: %s -> %s" % (self.path + remote_filename, local_path.name), log.INFO)
         self.bucket.download_file_by_name(quote_plus(self.path + remote_filename),
                                           b2.download_dest.DownloadDestLocalFile(local_path.name))
+=======
+        log.Log("Get: %s -> %s" % (self.path + remote_filename, local_path.name), log.INFO)
+        self.bucket.download_file_by_name(self.path + remote_filename,
+                                          b2.download_dest.DownloadDestLocalFile(local_path.name))
+>>>>>>> MERGE-SOURCE
 
     def _put(self, source_path, remote_filename):
         u"""
         Copy source_path to remote_filename
         """
+<<<<<<< TREE
         log.Log(u"Put: %s -> %s" % (source_path.name, self.path + remote_filename), log.INFO)
         self.bucket.upload_local_file(source_path.name, quote_plus(self.path + remote_filename),
                                       content_type=u'application/pgp-encrypted',
                                       progress_listener=B2ProgressListener())
+=======
+        log.Log("Put: %s -> %s" % (source_path.name, self.path + remote_filename), log.INFO)
+        self.bucket.upload_local_file(source_path.name, self.path + remote_filename,
+                                      content_type='application/pgp-encrypted',
+                                      progress_listener=progress_listener_factory())
+>>>>>>> MERGE-SOURCE
 
     def _list(self):
         u"""
@@ -131,14 +210,21 @@
         u"""
         Delete filename from remote server
         """
+<<<<<<< TREE
         log.Log(u"Delete: %s" % self.path + filename, log.INFO)
         file_version_info = self.file_info(quote_plus(self.path + filename))
         self.bucket.delete_file_version(file_version_info.id_, file_version_info.file_name)
+=======
+        log.Log("Delete: %s" % self.path + filename, log.INFO)
+        file_version_info = self.file_info(self.path + filename)
+        self.bucket.delete_file_version(file_version_info.id_, file_version_info.file_name)
+>>>>>>> MERGE-SOURCE
 
     def _query(self, filename):
         u"""
         Get size info of filename
         """
+<<<<<<< TREE
         log.Log(u"Query: %s" % self.path + filename, log.INFO)
         file_version_info = self.file_info(quote_plus(self.path + filename))
         return {u'size': file_version_info.size
@@ -154,3 +240,20 @@
 
 
 duplicity.backend.register_backend(u"b2", B2Backend)
+=======
+        log.Log("Query: %s" % self.path + filename, log.INFO)
+        file_version_info = self.file_info(self.path + filename)
+        return {'size': file_version_info.size
+                if file_version_info is not None and file_version_info.size is not None else -1}
+
+    def file_info(self, filename):
+        response = self.bucket.list_file_names(filename, 1)
+        for entry in response['files']:
+            file_version_info = b2.file_version.FileVersionInfoFactory.from_api_response(entry)
+            if file_version_info.file_name == filename:
+                return file_version_info
+        raise BackendException('File not found')
+
+
+duplicity.backend.register_backend("b2", B2Backend)
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/dpbxbackend.py'
--- duplicity/backends/dpbxbackend.py	2018-11-29 19:00:15 +0000
+++ duplicity/backends/dpbxbackend.py	2019-05-20 08:57:58 +0000
@@ -45,7 +45,21 @@
 from duplicity import log, globals
 from duplicity import progress
 from duplicity.errors import BackendException
+<<<<<<< TREE
 from duplicity.globals import num_retries
+=======
+import os
+import sys
+import traceback
+import urllib
+import re
+
+from dropbox import Dropbox
+from dropbox.exceptions import AuthError, BadInputError, ApiError
+from dropbox.files import UploadSessionCursor, CommitInfo, WriteMode, \
+    GetMetadataError, DeleteError, UploadSessionLookupError, ListFolderError
+from dropbox.oauth import DropboxOAuth2FlowNoRedirect
+>>>>>>> MERGE-SOURCE
 from requests.exceptions import ConnectionError
 import duplicity.backend
 
@@ -164,12 +178,23 @@
         print(u'-' * 72)
         auth_code = input(u"Enter the authorization code here: ").strip()
         try:
+<<<<<<< TREE
             log.Debug(u'dpbx,auth_flow.finish(%s)' % auth_code)
             authresult = auth_flow.finish(auth_code)
+=======
+            log.Debug('dpbx,auth_flow.finish(%s)' % auth_code)
+            authresult = auth_flow.finish(auth_code)
+>>>>>>> MERGE-SOURCE
         except Exception as e:
+<<<<<<< TREE
             raise BackendException(u'dpbx: Unable to obtain access token: %s' % e)
         log.Info(u"dpbx: Authentication successfull")
         self.save_access_token(authresult.access_token)
+=======
+            raise BackendException('dpbx: Unable to obtain access token: %s' % e)
+        log.Info("dpbx: Authentication successfull")
+        self.save_access_token(authresult.access_token)
+>>>>>>> MERGE-SOURCE
 
     def login(self):
         if self.load_access_token() is None:
@@ -403,10 +428,17 @@
         # Do a long listing to avoid connection reset
         if not self.user_authenticated():
             self.login()
+<<<<<<< TREE
         remote_dir = u'/' + urllib.parse.unquote(self.parsed_url.path.lstrip(u'/')).rstrip()
 
         log.Debug(u'dpbx.files_list_folder(%s)' % remote_dir)
+=======
+        remote_dir = '/' + urllib.unquote(self.parsed_url.path.lstrip('/')).rstrip()
+
+        log.Debug('dpbx.files_list_folder(%s)' % remote_dir)
+>>>>>>> MERGE-SOURCE
         res = []
+<<<<<<< TREE
         try:
             resp = self.api_client.files_list_folder(remote_dir)
             log.Debug(u'dpbx.list(%s): %s' % (remote_dir, resp))
@@ -422,6 +454,23 @@
                 log.Debug(u'dpbx.list(%s): ignore missing folder (%s)' % (remote_dir, e))
             else:
                 raise
+=======
+        try:
+            resp = self.api_client.files_list_folder(remote_dir)
+            log.Debug('dpbx.list(%s): %s' % (remote_dir, resp))
+
+            while True:
+                res.extend([entry.name for entry in resp.entries])
+                if not resp.has_more:
+                    break
+                resp = self.api_client.files_list_folder_continue(resp.cursor)
+        except ApiError as e:
+            if (isinstance(e.error, ListFolderError) and e.error.is_path() and
+                    e.error.get_path().is_not_found()):
+                log.Debug('dpbx.list(%s): ignore missing folder (%s)' % (remote_dir, e))
+            else:
+                raise
+>>>>>>> MERGE-SOURCE
 
         # Warn users of old version dpbx about automatically renamed files
         self.check_renamed_files(res)

=== modified file 'duplicity/backends/gdocsbackend.py'
--- duplicity/backends/gdocsbackend.py	2018-11-29 19:00:15 +0000
+++ duplicity/backends/gdocsbackend.py	2019-05-20 08:57:58 +0000
@@ -193,7 +193,13 @@
         # Done!
         return result
 
+<<<<<<< TREE
 
 u""" gdata is an alternate way to access gdocs, currently 05/2015 lacking OAuth support """
 duplicity.backend.register_backend(u'gdata+gdocs', GDocsBackend)
 duplicity.backend.uses_netloc.extend([u'gdata+gdocs'])
+=======
+""" gdata is an alternate way to access gdocs, currently 05/2015 lacking OAuth support """
+duplicity.backend.register_backend('gdata+gdocs', GDocsBackend)
+duplicity.backend.uses_netloc.extend(['gdata+gdocs'])
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/giobackend.py'
--- duplicity/backends/giobackend.py	2018-07-23 14:55:39 +0000
+++ duplicity/backends/giobackend.py	2019-05-20 08:57:58 +0000
@@ -143,8 +143,13 @@
         self.__copy_file(source_file, target_file)
 
     def _get(self, filename, local_path):
+<<<<<<< TREE
         from gi.repository import Gio  # @UnresolvedImport  # pylint: disable=import-error
         source_file = self.remote_file.get_child_for_display_name(filename)
+=======
+        from gi.repository import Gio  # @UnresolvedImport
+        source_file = self.remote_file.get_child_for_display_name(filename)
+>>>>>>> MERGE-SOURCE
         target_file = Gio.File.new_for_path(local_path.name)
         self.__copy_file(source_file, target_file)
 
@@ -169,11 +174,22 @@
         target_file.delete(None)
 
     def _query(self, filename):
+<<<<<<< TREE
         from gi.repository import Gio  # @UnresolvedImport  # pylint: disable=import-error
         target_file = self.remote_file.get_child_for_display_name(filename)
+=======
+        from gi.repository import Gio  # @UnresolvedImport
+        target_file = self.remote_file.get_child_for_display_name(filename)
+>>>>>>> MERGE-SOURCE
         info = target_file.query_info(Gio.FILE_ATTRIBUTE_STANDARD_SIZE,
                                       Gio.FileQueryInfoFlags.NONE, None)
+<<<<<<< TREE
         return {u'size': info.get_size()}
 
 
 duplicity.backend.register_backend_prefix(u'gio', GIOBackend)
+=======
+        return {'size': info.get_size()}
+
+duplicity.backend.register_backend_prefix('gio', GIOBackend)
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/hsibackend.py'
--- duplicity/backends/hsibackend.py	2018-11-29 19:00:15 +0000
+++ duplicity/backends/hsibackend.py	2019-05-20 08:57:58 +0000
@@ -65,6 +65,11 @@
         commandline = u'%s "rm %s%s"' % (hsi_command, self.remote_prefix, filename)
         self.subprocess_popen(commandline)
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u"hsi", HSIBackend)
 duplicity.backend.uses_netloc.extend([u'hsi'])
+=======
+duplicity.backend.register_backend("hsi", HSIBackend)
+duplicity.backend.uses_netloc.extend(['hsi'])
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/hubicbackend.py'
--- duplicity/backends/hubicbackend.py	2018-11-29 19:00:15 +0000
+++ duplicity/backends/hubicbackend.py	2019-05-20 08:57:58 +0000
@@ -64,5 +64,9 @@
         self.nso_exc = pyrax.exceptions.NoSuchObject
         self.container = pyrax.cloudfiles.create_container(container)
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u"cf+hubic", HubicBackend)
+=======
+duplicity.backend.register_backend("cf+hubic", HubicBackend)
+>>>>>>> MERGE-SOURCE

=== renamed file 'duplicity/backends/jottacloudbackend.py' => 'duplicity/backends/jottacloudbackend.py.THIS'
=== modified file 'duplicity/backends/lftpbackend.py'
--- duplicity/backends/lftpbackend.py	2019-02-21 21:42:26 +0000
+++ duplicity/backends/lftpbackend.py	2019-05-20 08:57:58 +0000
@@ -205,6 +205,7 @@
         )
         log.Debug(u"CMD: %s" % commandline)
         _, l, e = self.subprocess_popen(commandline)
+<<<<<<< TREE
         log.Debug(u"STDERR:\n"
                   u"%s" % (e))
         log.Debug(u"STDOUT:\n"
@@ -232,4 +233,32 @@
                                       u'lftp+sftp',
                                       u'lftp+webdav', u'lftp+webdavs',
                                       u'lftp+http', u'lftp+https']
+=======
+        log.Debug("STDERR:\n"
+                  "%s" % (e))
+        log.Debug("STDOUT:\n"
+                  "%s" % (l))
+
+duplicity.backend.register_backend("ftp", LFTPBackend)
+duplicity.backend.register_backend("ftps", LFTPBackend)
+duplicity.backend.register_backend("fish", LFTPBackend)
+duplicity.backend.register_backend("ftpes", LFTPBackend)
+
+duplicity.backend.register_backend("lftp+ftp", LFTPBackend)
+duplicity.backend.register_backend("lftp+ftps", LFTPBackend)
+duplicity.backend.register_backend("lftp+fish", LFTPBackend)
+duplicity.backend.register_backend("lftp+ftpes", LFTPBackend)
+duplicity.backend.register_backend("lftp+sftp", LFTPBackend)
+duplicity.backend.register_backend("lftp+webdav", LFTPBackend)
+duplicity.backend.register_backend("lftp+webdavs", LFTPBackend)
+duplicity.backend.register_backend("lftp+http", LFTPBackend)
+duplicity.backend.register_backend("lftp+https", LFTPBackend)
+
+duplicity.backend.uses_netloc.extend(['ftp', 'ftps', 'fish', 'ftpes',
+                                      'lftp+ftp', 'lftp+ftps',
+                                      'lftp+fish', 'lftp+ftpes',
+                                      'lftp+sftp',
+                                      'lftp+webdav', 'lftp+webdavs',
+                                      'lftp+http', 'lftp+https']
+>>>>>>> MERGE-SOURCE
                                      )

=== modified file 'duplicity/backends/localbackend.py'
--- duplicity/backends/localbackend.py	2018-07-23 14:55:39 +0000
+++ duplicity/backends/localbackend.py	2019-05-20 08:57:58 +0000
@@ -71,7 +71,13 @@
         target_file = self.remote_pathdir.append(filename)
         target_file.setdata()
         size = target_file.getsize() if target_file.exists() else -1
+<<<<<<< TREE
         return {u'size': size}
 
 
 duplicity.backend.register_backend(u"file", LocalBackend)
+=======
+        return {'size': size}
+
+duplicity.backend.register_backend("file", LocalBackend)
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/megabackend.py'
--- duplicity/backends/megabackend.py	2018-11-29 19:00:15 +0000
+++ duplicity/backends/megabackend.py	2019-05-20 08:57:58 +0000
@@ -34,6 +34,7 @@
     def __init__(self, parsed_url):
         duplicity.backend.Backend.__init__(self, parsed_url)
 
+<<<<<<< TREE
         # ensure all the necessary megatools binaries exist
         self._check_binary_exists(u'megals')
         self._check_binary_exists(u'megamkdir')
@@ -61,7 +62,37 @@
     def _check_binary_exists(self, cmd):
         u'checks that a specified command exists in the current path'
 
+=======
+        # ensure all the necessary megatools binaries exist
+        self._check_binary_exists('megals')
+        self._check_binary_exists('megamkdir')
+        self._check_binary_exists('megaget')
+        self._check_binary_exists('megaput')
+        self._check_binary_exists('megarm')
+
+        # store some basic info
+        self._hostname = parsed_url.hostname
+
+        if parsed_url.password is None:
+            self._megarc = os.getenv('HOME') + '/.megarc'
+        else:
+            self._megarc = False
+            self._username = parsed_url.username
+            self._password = self.get_password()
+
+        # remote folder (Can we assume /Root prefix?)
+        self._root = '/Root'
+        self._folder = self._root + '/' + parsed_url.path[1:]
+
+        # make sure the remote folder exists (the whole path)
+        self._makedir_recursive(parsed_url.path[1:].split('/'))
+
+    def _check_binary_exists(self, cmd):
+        'checks that a specified command exists in the current path'
+
+>>>>>>> MERGE-SOURCE
         try:
+<<<<<<< TREE
             # ignore the output, we only need the return code
             subprocess.check_output([u'which', cmd])
         except Exception as e:
@@ -90,10 +121,45 @@
                 self._make_dir(p)
             except:
                 pass
+=======
+            # ignore the output, we only need the return code
+            subprocess.check_output(['which', cmd])
+        except Exception as e:
+            raise BackendException("command '%s' not found, make sure megatools are installed" % (cmd,))
+
+    def _makedir(self, path):
+        'creates a remote directory'
+
+        if self._megarc:
+            cmd = ['megamkdir', '--config', self._megarc, path]
+        else:
+            cmd = ['megamkdir', '-u', self._username, '-p', self._password, path]
+
+        self.subprocess_popen(cmd)
+
+    def _makedir_recursive(self, path):
+        'creates a remote directory (recursively the whole path), ingores errors'
+
+        print ("mkdir: %s" % ('/'.join(path),))
+
+        p = self._root
+
+        for folder in path:
+            p = p + '/' + folder
+            try:
+                self._make_dir(p)
+            except:
+                pass
+>>>>>>> MERGE-SOURCE
 
     def _put(self, source_path, remote_filename):
+<<<<<<< TREE
         u'uploads file to Mega (deletes it first, to ensure it does not exist)'
 
+=======
+        'uploads file to Mega (deletes it first, to ensure it does not exist)'
+
+>>>>>>> MERGE-SOURCE
         try:
             self.delete(remote_filename)
         except Exception:
@@ -102,16 +168,29 @@
         self.upload(local_file=source_path.get_canonical(), remote_file=remote_filename)
 
     def _get(self, remote_filename, local_path):
+<<<<<<< TREE
         u'downloads file from Mega'
 
         self.download(remote_file=remote_filename, local_file=local_path.name)
+=======
+        'downloads file from Mega'
+
+        self.download(remote_file=remote_filename, local_file=local_path.name)
+>>>>>>> MERGE-SOURCE
 
     def _list(self):
+<<<<<<< TREE
         u'list files in the backup folder'
 
         return self.folder_contents(files_only=True)
+=======
+        'list files in the backup folder'
+
+        return self.folder_contents(files_only=True)
+>>>>>>> MERGE-SOURCE
 
     def _delete(self, filename):
+<<<<<<< TREE
         u'deletes remote '
 
         self.delete(remote_file=filename)
@@ -178,3 +257,71 @@
 
 duplicity.backend.register_backend(u'mega', MegaBackend)
 duplicity.backend.uses_netloc.extend([u'mega'])
+=======
+        'deletes remote '
+
+        self.delete(remote_file=filename)
+
+    def folder_contents(self, files_only=False):
+        'lists contents of a folder, optionally ignoring subdirectories'
+
+        print ("megals: %s" % (self._folder,))
+
+        if self._megarc:
+            cmd = ['megals', '--config', self._megarc, self._folder]
+        else:
+            cmd = ['megals', '-u', self._username, '-p', self._password, self._folder]
+
+        files = subprocess.check_output(cmd)
+        files = files.strip().split('\n')
+
+        # remove the folder name, including the path separator
+        files = [f[len(self._folder) + 1:] for f in files]
+
+        # optionally ignore entries containing path separator (i.e. not files)
+        if files_only:
+            files = [f for f in files if '/' not in f]
+
+        return files
+
+    def download(self, remote_file, local_file):
+
+        print ("megaget: %s" % (remote_file,))
+
+        if self._megarc:
+            cmd = ['megaget', '--config', self._megarc, '--no-progress',
+                   '--path', local_file, self._folder + '/' + remote_file]
+        else:
+            cmd = ['megaget', '-u', self._username, '-p', self._password, '--no-progress',
+                   '--path', local_file, self._folder + '/' + remote_file]
+
+        self.subprocess_popen(cmd)
+
+    def upload(self, local_file, remote_file):
+
+        print ("megaput: %s" % (remote_file,))
+
+        if self._megarc:
+            cmd = ['megaput', '--config', self._megarc, '--no-progress',
+                   '--path', self._folder + '/' + remote_file, local_file]
+        else:
+            cmd = ['megaput', '-u', self._username, '-p', self._password, '--no-progress',
+                   '--path', self._folder + '/' + remote_file, local_file]
+
+        self.subprocess_popen(cmd)
+
+    def delete(self, remote_file):
+
+        print ("megarm: %s" % (remote_file,))
+
+        if self._megarc:
+            cmd = ['megarm', '--config', self._megarc, self._folder + '/' + remote_file]
+        else:
+            cmd = ['megarm', '-u', self._username, '-p', self._password, self._folder + '/' + remote_file]
+
+        self.subprocess_popen(cmd)
+
+
+duplicity.backend.register_backend('mega', MegaBackend)
+duplicity.backend.uses_netloc.extend(['mega'])
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/multibackend.py'
--- duplicity/backends/multibackend.py	2018-11-29 19:00:15 +0000
+++ duplicity/backends/multibackend.py	2019-05-20 08:57:58 +0000
@@ -44,7 +44,6 @@
 
     # the stores we are managing
     __stores = []
-    __affinities = {}
 
     # Set of known query paramaters
     __knownQueryParameters = frozenset([
@@ -188,6 +187,7 @@
 
             store = duplicity.backend.get_backend(url)
             self.__stores.append(store)
+<<<<<<< TREE
 
             # Prefix affinity
             if u'prefixes' in config:
@@ -201,11 +201,14 @@
                 else:
                     self.__affinities[prefix] = [store]
 
+=======
+>>>>>>> MERGE-SOURCE
             # store_list = store.list()
             # log.Log(_("MultiBackend: at init, store %s has %s files")
             #         % (url, len(store_list)),
             #         log.INFO)
 
+<<<<<<< TREE
     def _eligible_stores(self, filename):
         if self.__affinities:
             matching_prefixes = [k for k in list(self.__affinities.keys()) if filename.startswith(k)]
@@ -217,23 +220,21 @@
         # No affinity rule or no matching store for that prefix
         return self.__stores
 
+=======
+>>>>>>> MERGE-SOURCE
     def _put(self, source_path, remote_filename):
         # Store an indication of whether any of these passed
         passed = False
-
-        # Eligibile stores for this action
-        stores = self._eligible_stores(remote_filename)
-
         # Mirror mode always starts at zero
         if self.__mode == u'mirror':
             self.__write_cursor = 0
 
         first = self.__write_cursor
         while True:
-            store = stores[self.__write_cursor]
+            store = self.__stores[self.__write_cursor]
             try:
                 next = self.__write_cursor + 1
-                if (next > len(stores) - 1):
+                if (next > len(self.__stores) - 1):
                     next = 0
                 log.Log(_(u"MultiBackend: _put: write to store #%s (%s)")
                         % (self.__write_cursor, store.backend.parsed_url.url_string),
@@ -274,9 +275,7 @@
         # before finally giving up).  So we need to get the list first
         # before we try to fetch
         # ENHANCEME: maintain a cached list for each store
-        stores = self._eligible_stores(remote_filename)
-
-        for s in stores:
+        for s in self.__stores:
             list = s.list()
             if remote_filename in list:
                 s.get(remote_filename, local_path)
@@ -307,16 +306,13 @@
     def _delete(self, filename):
         # Store an indication on whether any passed
         passed = False
-
-        stores = self._eligible_stores(filename)
-
         # since the backend operations will be retried, we can't
         # simply try to get from the store, if not found, move to the
         # next store (since each failure will be retried n times
         # before finally giving up).  So we need to get the list first
         # before we try to delete
         # ENHANCEME: maintain a cached list for each store
-        for s in stores:
+        for s in self.__stores:
             list = s.list()
             if filename in list:
                 s._do_delete(filename)
@@ -333,5 +329,9 @@
                     log.ERROR)
 #           raise BackendException("failed to delete")
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u'multi', MultiBackend)
+=======
+duplicity.backend.register_backend('multi', MultiBackend)
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/ncftpbackend.py'
--- duplicity/backends/ncftpbackend.py	2019-02-26 22:21:52 +0000
+++ duplicity/backends/ncftpbackend.py	2019-05-20 08:57:58 +0000
@@ -126,6 +126,11 @@
             (self.flags, filename, self.url_string)
         self.subprocess_popen(commandline)
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u"ncftp+ftp", NCFTPBackend)
 duplicity.backend.uses_netloc.extend([u'ncftp+ftp'])
+=======
+duplicity.backend.register_backend("ncftp+ftp", NCFTPBackend)
+duplicity.backend.uses_netloc.extend(['ncftp+ftp'])
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/onedrivebackend.py'
--- duplicity/backends/onedrivebackend.py	2019-03-16 23:23:40 +0000
+++ duplicity/backends/onedrivebackend.py	2019-05-20 08:57:58 +0000
@@ -289,5 +289,9 @@
     def _retry_cleanup(self):
         self.initialize_oauth2_session()
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u'onedrive', OneDriveBackend)
+=======
+duplicity.backend.register_backend('onedrive', OneDriveBackend)
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/par2backend.py'
--- duplicity/backends/par2backend.py	2018-11-29 19:00:15 +0000
+++ duplicity/backends/par2backend.py	2019-05-20 08:57:58 +0000
@@ -218,5 +218,9 @@
     def close(self):
         self.wrapped_backend._close()
 
+<<<<<<< TREE
 
 backend.register_backend_prefix(u'par2', Par2Backend)
+=======
+backend.register_backend_prefix('par2', Par2Backend)
+>>>>>>> MERGE-SOURCE

=== renamed file 'duplicity/backends/pcabackend.py' => 'duplicity/backends/pcabackend.py.THIS'
=== modified file 'duplicity/backends/pydrivebackend.py'
--- duplicity/backends/pydrivebackend.py	2019-05-19 16:14:00 +0000
+++ duplicity/backends/pydrivebackend.py	2019-05-20 08:57:58 +0000
@@ -93,8 +93,13 @@
         else:
             file_in_root = self.drive.CreateFile({u'title': u'i_am_in_root'})
             file_in_root.Upload()
+<<<<<<< TREE
             parent_folder_id = file_in_root[u'parents'][0][u'id']
             file_in_root.Delete()
+=======
+            parent_folder_id = file_in_root['parents'][0]['id']
+            file_in_root.Delete()
+>>>>>>> MERGE-SOURCE
 
         # Fetch destination folder entry and create hierarchy if required.
         folder_names = parsed_url.path.split(u'/')
@@ -215,11 +220,19 @@
             return log.ErrorCode.backend_permission_denied
         return log.ErrorCode.backend_error
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u'pydrive', PyDriveBackend)
 u""" pydrive is an alternate way to access gdocs """
 duplicity.backend.register_backend(u'pydrive+gdocs', PyDriveBackend)
 u""" register pydrive as the default way to access gdocs """
 duplicity.backend.register_backend(u'gdocs', PyDriveBackend)
+=======
+duplicity.backend.register_backend('pydrive', PyDriveBackend)
+""" pydrive is an alternate way to access gdocs """
+duplicity.backend.register_backend('pydrive+gdocs', PyDriveBackend)
+""" register pydrive as the default way to access gdocs """
+duplicity.backend.register_backend('gdocs', PyDriveBackend)
+>>>>>>> MERGE-SOURCE
 
 duplicity.backend.uses_netloc.extend([u'pydrive', u'pydrive+gdocs', u'gdocs'])

=== modified file 'duplicity/backends/rsyncbackend.py'
--- duplicity/backends/rsyncbackend.py	2019-02-27 16:16:50 +0000
+++ duplicity/backends/rsyncbackend.py	2019-05-20 08:57:58 +0000
@@ -157,6 +157,11 @@
             util.ignore_missing(os.unlink, file)
         os.rmdir(dir)
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u"rsync", RsyncBackend)
 duplicity.backend.uses_netloc.extend([u'rsync'])
+=======
+duplicity.backend.register_backend("rsync", RsyncBackend)
+duplicity.backend.uses_netloc.extend(['rsync'])
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/ssh_paramiko_backend.py'
--- duplicity/backends/ssh_paramiko_backend.py	2018-12-23 16:52:31 +0000
+++ duplicity/backends/ssh_paramiko_backend.py	2019-05-20 08:57:58 +0000
@@ -103,8 +103,13 @@
             """
             def missing_host_key(self, client, hostname, key):
                 fp = hexlify(key.get_fingerprint())
+<<<<<<< TREE
                 fingerprint = u':'.join(a + b for a, b in list(zip(fp[::2], fp[1::2])))
                 question = u"""The authenticity of host '%s' can't be established.
+=======
+                fingerprint = ':'.join(a + b for a, b in list(zip(fp[::2], fp[1::2])))
+                question = """The authenticity of host '%s' can't be established.
+>>>>>>> MERGE-SOURCE
 %s key fingerprint is %s.
 Are you sure you want to continue connecting (yes/no)? """ % (hostname,
                                                               key.get_name().upper(),

=== modified file 'duplicity/backends/ssh_pexpect_backend.py'
--- duplicity/backends/ssh_pexpect_backend.py	2019-02-26 21:47:38 +0000
+++ duplicity/backends/ssh_pexpect_backend.py	2019-05-20 08:57:58 +0000
@@ -300,7 +300,13 @@
         commandline = (u"%s %s %s" % (self.sftp_command, globals.ssh_options, self.host_string))
         self.run_sftp_command(commandline, commands)
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u"pexpect+sftp", SSHPExpectBackend)
 duplicity.backend.register_backend(u"pexpect+scp", SSHPExpectBackend)
 duplicity.backend.uses_netloc.extend([u'pexpect+sftp', u'pexpect+scp'])
+=======
+duplicity.backend.register_backend("pexpect+sftp", SSHPExpectBackend)
+duplicity.backend.register_backend("pexpect+scp", SSHPExpectBackend)
+duplicity.backend.uses_netloc.extend(['pexpect+sftp', 'pexpect+scp'])
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/swiftbackend.py'
--- duplicity/backends/swiftbackend.py	2018-11-29 19:00:15 +0000
+++ duplicity/backends/swiftbackend.py	2019-05-20 08:57:58 +0000
@@ -22,7 +22,6 @@
 import os
 
 import duplicity.backend
-from duplicity import globals
 from duplicity import log
 from duplicity import util
 from duplicity.errors import BackendException
@@ -112,9 +111,12 @@
         else:
             self.prefix = u''
 
+<<<<<<< TREE
         policy = globals.swift_storage_policy
         policy_header = u'X-Storage-Policy'
 
+=======
+>>>>>>> MERGE-SOURCE
         container_metadata = None
         try:
             self.conn = Connection(**conn_kwargs)
@@ -129,15 +131,17 @@
         if container_metadata is None:
             log.Info(u"Creating container %s" % self.container)
             try:
-                headers = dict([[policy_header, policy]]) if policy else None
-                self.conn.put_container(self.container, headers=headers)
+                self.conn.put_container(self.container)
             except Exception as e:
                 log.FatalError(u"Container creation failed: %s %s"
                                % (e.__class__.__name__, str(e)),
                                log.ErrorCode.connection_failed)
+<<<<<<< TREE
         elif policy and container_metadata[policy_header.lower()] != policy:
             log.FatalError(u"Container '%s' exists but its storage policy is '%s' not '%s'."
                            % (self.container, container_metadata[policy_header.lower()], policy))
+=======
+>>>>>>> MERGE-SOURCE
 
     def _error_code(self, operation, e):
         if isinstance(e, self.resp_exc):

=== modified file 'duplicity/backends/sxbackend.py'
--- duplicity/backends/sxbackend.py	2019-02-27 18:43:19 +0000
+++ duplicity/backends/sxbackend.py	2019-05-20 08:57:58 +0000
@@ -52,5 +52,9 @@
         commandline = u"sxrm {0}/{1}".format(self.url_string, filename)
         self.subprocess_popen(commandline)
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u"sx", SXBackend)
+=======
+duplicity.backend.register_backend("sx", SXBackend)
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/tahoebackend.py'
--- duplicity/backends/tahoebackend.py	2018-11-29 19:00:15 +0000
+++ duplicity/backends/tahoebackend.py	2019-05-20 08:57:58 +0000
@@ -73,7 +73,13 @@
         return output.split(b'\n') if output else []
 
     def _delete(self, filename):
+<<<<<<< TREE
         self.run(u"tahoe", u"rm", self.get_remote_path(filename))
 
 
 duplicity.backend.register_backend(u"tahoe", TAHOEBackend)
+=======
+        self.run("tahoe", "rm", self.get_remote_path(filename))
+
+duplicity.backend.register_backend("tahoe", TAHOEBackend)
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/backends/webdavbackend.py'
--- duplicity/backends/webdavbackend.py	2019-03-10 22:58:32 +0000
+++ duplicity/backends/webdavbackend.py	2019-05-20 08:57:58 +0000
@@ -260,11 +260,19 @@
             try:
                 return self.get_kerberos_authorization()
             except ImportError:
+<<<<<<< TREE
                 log.Warn(_(u"python-kerberos needed to use kerberos \
+=======
+                log.Warn(_("python-kerberos needed to use kerberos \
+>>>>>>> MERGE-SOURCE
                           authorization, falling back to basic auth."))
                 return self.get_basic_authorization()
             except Exception as e:
+<<<<<<< TREE
                 log.Warn(_(u"Kerberos authorization failed: %s.\
+=======
+                log.Warn(_("Kerberos authorization failed: %s.\
+>>>>>>> MERGE-SOURCE
                           Falling back to basic auth.") % e)
                 return self.get_basic_authorization()
         elif token.lower() == u'basic':
@@ -277,9 +285,15 @@
         return urllib2.parse_keqv_list(urllib2.parse_http_list(challenge_string))
 
     def get_kerberos_authorization(self):
+<<<<<<< TREE
         import kerberos  # pylint: disable=import-error
         _, ctx = kerberos.authGSSClientInit(u"HTTP@%s" % self.conn.host)
         kerberos.authGSSClientStep(ctx, u"")
+=======
+        import kerberos  # pylint: disable=import-error
+        _, ctx = kerberos.authGSSClientInit("HTTP@%s" % self.conn.host)
+        kerberos.authGSSClientStep(ctx, "")
+>>>>>>> MERGE-SOURCE
         tgt = kerberos.authGSSClientResponse(ctx)
         return u'Negotiate %s' % tgt
 
@@ -287,8 +301,13 @@
         u"""
         Returns the basic auth header
         """
+<<<<<<< TREE
         auth_string = u'%s:%s' % (self.username, self.password)
         return u'Basic %s' % base64.encodestring(auth_string).strip()
+=======
+        auth_string = '%s:%s' % (self.username, self.password)
+        return 'Basic %s' % "".join(base64.encodestring(auth_string).split())
+>>>>>>> MERGE-SOURCE
 
     def get_digest_authorization(self, path):
         u"""
@@ -474,9 +493,17 @@
             if response:
                 response.close()
 
+<<<<<<< TREE
 
 duplicity.backend.register_backend(u"http", WebDAVBackend)
 duplicity.backend.register_backend(u"https", WebDAVBackend)
 duplicity.backend.register_backend(u"webdav", WebDAVBackend)
 duplicity.backend.register_backend(u"webdavs", WebDAVBackend)
 duplicity.backend.uses_netloc.extend([u'http', u'https', u'webdav', u'webdavs'])
+=======
+duplicity.backend.register_backend("http", WebDAVBackend)
+duplicity.backend.register_backend("https", WebDAVBackend)
+duplicity.backend.register_backend("webdav", WebDAVBackend)
+duplicity.backend.register_backend("webdavs", WebDAVBackend)
+duplicity.backend.uses_netloc.extend(['http', 'https', 'webdav', 'webdavs'])
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/collections.py'
--- duplicity/collections.py	2019-03-10 22:58:32 +0000
+++ duplicity/collections.py	2019-05-20 08:57:58 +0000
@@ -32,7 +32,7 @@
 
 import types
 import gettext
-import sys
+
 
 from duplicity import log
 from duplicity import file_naming
@@ -44,12 +44,15 @@
 from duplicity import util
 from duplicity.gpg import GPGError
 
+<<<<<<< TREE
 # For type testing against both int and long types that works in python 2/3
 if sys.version_info < (3,):
     integer_types = (int, int)
 else:
     integer_types = (int,)
 
+=======
+>>>>>>> MERGE-SOURCE
 
 class CollectionsError(Exception):
     pass
@@ -73,7 +76,6 @@
         self.end_time = None  # will be set if inc
         self.partial = False  # true if a partial backup
         self.encrypted = False  # true if an encrypted backup
-        self.files_changed = []
         self.action = action
 
     def is_complete(self):
@@ -138,10 +140,6 @@
         self.encrypted = bool(pr.encrypted)
         self.info_set = True
 
-    def set_files_changed(self):
-        mf = self.get_manifest()
-        self.files_changed = mf.get_files_changed()
-
     def set_manifest(self, remote_filename):
         u"""
         Add local and remote manifest filenames to backup set
@@ -150,8 +148,13 @@
                                                remote_filename)
         self.remote_manifest_name = remote_filename
 
+<<<<<<< TREE
         if self.action not in [u"collection-status", u"replicate"]:
             local_filename_list = globals.archive_dir_path.listdir()
+=======
+        if self.action not in ["collection-status"]:
+            local_filename_list = globals.archive_dir.listdir()
+>>>>>>> MERGE-SOURCE
         else:
             local_filename_list = []
         for local_filename in local_filename_list:
@@ -161,9 +164,7 @@
                     pr.start_time == self.start_time and
                     pr.end_time == self.end_time):
                 self.local_manifest_path = \
-                    globals.archive_dir_path.append(local_filename)
-
-                self.set_files_changed()
+                    globals.archive_dir.append(local_filename)
                 break
 
     def delete(self):
@@ -177,8 +178,13 @@
         except Exception:
             log.Debug(_(u"BackupSet.delete: missing %s") % [util.fsdecode(f) for f in rfn])
             pass
+<<<<<<< TREE
         if self.action not in [u"collection-status", u"replicate"]:
             local_filename_list = globals.archive_dir_path.listdir()
+=======
+        if self.action not in ["collection-status"]:
+            local_filename_list = globals.archive_dir.listdir()
+>>>>>>> MERGE-SOURCE
         else:
             local_filename_list = []
         for lfn in local_filename_list:
@@ -187,7 +193,7 @@
                     pr.start_time == self.start_time and
                     pr.end_time == self.end_time):
                 try:
-                    globals.archive_dir_path.append(lfn).delete()
+                    globals.archive_dir.append(lfn).delete()
                 except Exception:
                     log.Debug(_(u"BackupSet.delete: missing %s") % [util.fsdecode(f) for f in lfn])
                     pass
@@ -242,8 +248,13 @@
         """
         assert self.local_manifest_path
         manifest_buffer = self.local_manifest_path.get_data()
+<<<<<<< TREE
         log.Info(_(u"Processing local manifest %s (%s)") % (
             self.local_manifest_path.name, len(manifest_buffer)))
+=======
+        log.Info(_("Processing local manifest %s (%s)") % (
+            self.local_manifest_path.name, len(manifest_buffer)))
+>>>>>>> MERGE-SOURCE
         return manifest.Manifest().from_string(manifest_buffer)
 
     def get_remote_manifest(self):
@@ -254,11 +265,21 @@
         try:
             manifest_buffer = self.backend.get_data(self.remote_manifest_name)
         except GPGError as message:
+<<<<<<< TREE
             log.Error(_(u"Error processing remote manifest (%s): %s") %
                       (util.fsdecode(self.remote_manifest_name), util.uexc(message)))
+=======
+            log.Error(_("Error processing remote manifest (%s): %s") %
+                      (util.ufn(self.remote_manifest_name), util.uexc(message)))
+>>>>>>> MERGE-SOURCE
             return None
+<<<<<<< TREE
         log.Info(_(u"Processing remote manifest %s (%s)") % (
             util.fsdecode(self.remote_manifest_name), len(manifest_buffer)))
+=======
+        log.Info(_("Processing remote manifest %s (%s)") % (
+            util.ufn(self.remote_manifest_name), len(manifest_buffer)))
+>>>>>>> MERGE-SOURCE
         return manifest.Manifest().from_string(manifest_buffer)
 
     def get_manifest(self):
@@ -298,9 +319,6 @@
             return self.end_time
         assert 0, u"Neither self.time nor self.end_time set"
 
-    def get_files_changed(self):
-        return self.files_changed
-
     def __len__(self):
         u"""
         Return the number of volumes in the set
@@ -482,19 +500,19 @@
         Return new SignatureChain.
 
         local should be true iff the signature chain resides in
-        globals.archive_dir_path and false if the chain is in
+        globals.archive_dir and false if the chain is in
         globals.backend.
 
-        @param local: True if sig chain in globals.archive_dir_path
+        @param local: True if sig chain in globals.archive_dir
         @type local: Boolean
 
         @param location: Where the sig chain is located
-        @type location: globals.archive_dir_path or globals.backend
+        @type location: globals.archive_dir or globals.backend
         """
         if local:
-            self.archive_dir_path, self.backend = location, None
+            self.archive_dir, self.backend = location, None
         else:
-            self.archive_dir_path, self.backend = None, location
+            self.archive_dir, self.backend = None, location
         self.fullsig = None  # filename of full signature
         self.inclist = []  # list of filenames of incremental signatures
         self.start_time, self.end_time = None, None
@@ -503,8 +521,13 @@
         u"""
         Local or Remote and List of files in the set
         """
+<<<<<<< TREE
         if self.archive_dir_path:
             place = _(u"local")
+=======
+        if self.archive_dir:
+            place = _("local")
+>>>>>>> MERGE-SOURCE
         else:
             place = _(u"remote")
         filelist = []
@@ -518,14 +541,24 @@
         Check to make sure times are in whole seconds
         """
         for time in time_list:
+<<<<<<< TREE
             if type(time) not in integer_types:
                 assert 0, u"Time %s in %s wrong type" % (time, time_list)
+=======
+            if type(time) not in (types.LongType, types.IntType):
+                assert 0, "Time %s in %s wrong type" % (time, time_list)
+>>>>>>> MERGE-SOURCE
 
     def islocal(self):
+<<<<<<< TREE
         u"""
         Return true if represents a signature chain in archive_dir_path
-        """
-        if self.archive_dir_path:
+=======
+        """
+        Return true if represents a signature chain in archive_dir
+>>>>>>> MERGE-SOURCE
+        """
+        if self.archive_dir:
             return True
         else:
             return False
@@ -562,11 +595,17 @@
         optionally at a certain time
         """
         assert self.fullsig
-        if self.archive_dir_path:  # local
+        if self.archive_dir:  # local
             def filename_to_fileobj(filename):
+<<<<<<< TREE
                 u"""Open filename in archive_dir_path, return filtered fileobj"""
                 sig_dp = path.DupPath(self.archive_dir_path.name, (filename,))
                 return sig_dp.filtered_open(u"rb")
+=======
+                """Open filename in archive_dir, return filtered fileobj"""
+                sig_dp = path.DupPath(self.archive_dir.name, (filename,))
+                return sig_dp.filtered_open("rb")
+>>>>>>> MERGE-SOURCE
         else:
             filename_to_fileobj = self.backend.get_fileobj_read
         return [filename_to_fileobj(f) for f in self.get_filenames(time)]
@@ -576,11 +615,11 @@
         Remove all files in signature set
         """
         # Try to delete in opposite order, so something useful even if aborted
-        if self.archive_dir_path:
+        if self.archive_dir:
             for i in range(len(self.inclist) - 1, -1, -1):
-                self.archive_dir_path.append(self.inclist[i]).delete()
+                self.archive_dir.append(self.inclist[i]).delete()
             if not keep_full:
-                self.archive_dir_path.append(self.fullsig).delete()
+                self.archive_dir.append(self.fullsig).delete()
         else:
             assert self.backend
             inclist_copy = self.inclist[:]
@@ -610,12 +649,17 @@
     u"""
     Hold information about available chains and sets
     """
+<<<<<<< TREE
     def __init__(self, backend, archive_dir_path, action):
         u"""
+=======
+    def __init__(self, backend, archive_dir, action):
+        """
+>>>>>>> MERGE-SOURCE
         Make new object.  Does not set values
         """
         self.backend = backend
-        self.archive_dir_path = archive_dir_path
+        self.archive_dir = archive_dir
         self.action = action
 
         # Will hold (signature chain, backup chain) pair of active
@@ -640,8 +684,13 @@
         u"""
         Return summary of the collection, suitable for printing to log
         """
+<<<<<<< TREE
         l = [u"backend %s" % (self.backend.__class__.__name__,),
              u"archive-dir %s" % (self.archive_dir_path,)]
+=======
+        l = ["backend %s" % (self.backend.__class__.__name__,),
+             "archive-dir %s" % (self.archive_dir,)]
+>>>>>>> MERGE-SOURCE
 
         for i in range(len(self.other_backup_chains)):
             # A bit of a misnomer.  Chain might have a sig.
@@ -665,7 +714,11 @@
              u"-----------------",
              _(u"Connecting with backend: %s") %
              (self.backend.__class__.__name__,),
+<<<<<<< TREE
              _(u"Archive dir: %s") % (self.archive_dir_path.uc_name if self.archive_dir_path else u'None',)]
+=======
+             _("Archive dir: %s") % (util.ufn(self.archive_dir.name),)]
+>>>>>>> MERGE-SOURCE
 
         l.append(u"\n" +
                  ngettext(u"Found %d secondary backup chain.",
@@ -703,8 +756,13 @@
         return u"\n".join(l)
 
     def set_values(self, sig_chain_warning=1):
+<<<<<<< TREE
         u"""
         Set values from archive_dir_path and backend.
+=======
+        """
+        Set values from archive_dir and backend.
+>>>>>>> MERGE-SOURCE
 
         Returns self for convenience.  If sig_chain_warning is set to None,
         do not warn about unnecessary sig chains.  This is because there may
@@ -720,8 +778,13 @@
                   len(backend_filename_list))
 
         # get local filename list
+<<<<<<< TREE
         if self.action not in [u"collection-status", u"replicate"]:
             local_filename_list = self.archive_dir_path.listdir()
+=======
+        if self.action not in ["collection-status"]:
+            local_filename_list = self.archive_dir.listdir()
+>>>>>>> MERGE-SOURCE
         else:
             local_filename_list = []
         log.Debug(ngettext(u"%d file exists in cache",
@@ -909,8 +972,13 @@
         return ([p[1] for p in time_set_pairs], incomplete_sets)
 
     def get_signature_chains(self, local, filelist=None):
+<<<<<<< TREE
         u"""
         Find chains in archive_dir_path (if local is true) or backend
+=======
+        """
+        Find chains in archive_dir (if local is true) or backend
+>>>>>>> MERGE-SOURCE
 
         Use filelist if given, otherwise regenerate.  Return value is
         pair (list of chains, list of signature paths not in any
@@ -920,8 +988,13 @@
             if filelist is not None:
                 return filelist
             elif local:
+<<<<<<< TREE
                 if self.action not in [u"collection-status", u"replicate"]:
                     return self.archive_dir_path.listdir()
+=======
+                if self.action not in ["collection-status"]:
+                    return self.archive_dir.listdir()
+>>>>>>> MERGE-SOURCE
                 else:
                     return []
             else:
@@ -932,7 +1005,7 @@
             Return new empty signature chain
             """
             if local:
-                return SignatureChain(True, self.archive_dir_path)
+                return SignatureChain(True, self.archive_dir)
             else:
                 return SignatureChain(False, self.backend)
 
@@ -1196,6 +1269,7 @@
             old_sets = [s for s in chain.get_all_sets() if s.get_time() < t]
             result_sets.extend(old_sets)
         return self.sort_sets(result_sets)
+<<<<<<< TREE
 
     def get_file_changed_record(self, filepath):
         u"""
@@ -1246,3 +1320,5 @@
 
         l.append(u"-------------------------")
         return u"\n".join(l)
+=======
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/commandline.py'
--- duplicity/commandline.py	2019-05-05 12:16:14 +0000
+++ duplicity/commandline.py	2019-05-20 08:57:58 +0000
@@ -19,8 +19,12 @@
 # along with duplicity; if not, write to the Free Software Foundation,
 # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
+<<<<<<< TREE
 u"""Parse command line, check for consistency, and set globals"""
 from __future__ import print_function
+=======
+"""Parse command line, check for consistency, and set globals"""
+>>>>>>> MERGE-SOURCE
 
 from builtins import filter
 from builtins import str
@@ -58,8 +62,8 @@
 collection_status = None  # Will be set to true if collection-status command given
 cleanup = None  # Set to true if cleanup command given
 verify = None  # Set to true if verify command given
-replicate = None  # Set to true if replicate command given
 
+<<<<<<< TREE
 commands = [u"cleanup",
             u"collection-status",
             u"full",
@@ -71,6 +75,18 @@
             u"restore",
             u"verify",
             u"replicate"
+=======
+commands = ["cleanup",
+            "collection-status",
+            "full",
+            "incremental",
+            "list-current-files",
+            "remove-older-than",
+            "remove-all-but-n-full",
+            "remove-all-inc-of-but-n-full",
+            "restore",
+            "verify",
+>>>>>>> MERGE-SOURCE
             ]
 
 
@@ -203,8 +219,12 @@
             optparse.Option.take_action(
                 self, action, dest, opt, value, values, parser)
 
+<<<<<<< TREE
 
 u"""
+=======
+"""
+>>>>>>> MERGE-SOURCE
 Fix:
     File "/usr/lib/pythonX.X/optparse.py", line XXXX, in print_help
     file.write(self.format_help().encode(encoding, "replace"))
@@ -245,7 +265,7 @@
 def parse_cmdline_options(arglist):
     u"""Parse argument list"""
     global select_opts, select_files, full_backup
-    global list_current, collection_status, cleanup, remove_time, verify, replicate
+    global list_current, collection_status, cleanup, remove_time, verify
 
     def set_log_fd(fd):
         if fd < 1:
@@ -270,7 +290,11 @@
                            log.ErrorCode.cant_open_filelist)
 
     def print_ver(o, s, v, p):
+<<<<<<< TREE
         print(u"duplicity %s" % (globals.version))
+=======
+        print "duplicity %s" % (globals.version)
+>>>>>>> MERGE-SOURCE
         sys.exit(0)
 
     def add_rename(o, s, v, p):
@@ -391,9 +415,15 @@
     # whole root.
     # TRANSL: Used in usage help to represent a Unix-style path name. Example:
     # --archive-dir <path>
+<<<<<<< TREE
     parser.add_option(u"--file-to-restore", u"-r", action=u"callback", type=u"file",
                       metavar=_(u"path"), dest=u"restore_dir",
                       callback=lambda o, s, v, p: setattr(p.values, u"restore_dir", util.fsencode(v.strip(u'/'))))
+=======
+    parser.add_option("--file-to-restore", "-r", action="callback", type="file",
+                      metavar=_("path"), dest="restore_dir",
+                      callback=lambda o, s, v, p: setattr(p.values, "restore_dir", v.strip('/')))
+>>>>>>> MERGE-SOURCE
 
     # Used to confirm certain destructive operations like deleting old files.
     parser.add_option(u"--force", action=u"store_true")
@@ -501,11 +531,19 @@
                       callback=lambda o, s, v, p: (setattr(p.values, o.dest, True),
                                                    old_fn_deprecation(s)))
 
+<<<<<<< TREE
     # Sync only required metadata
     parser.add_option("--metadata-sync-mode",
                       default="partial",
                       choices=("full", "partial"))
 
+=======
+    # Sync only required metadata
+    parser.add_option("--metadata-sync-mode",
+                      default="full",
+                      choices=("full", "partial"))
+
+>>>>>>> MERGE-SOURCE
     # Level of Redundancy in % for Par2 files
     parser.add_option(u"--par2-redundancy", type=u"int", metavar=_(u"number"))
 
@@ -585,6 +623,7 @@
     parser.add_option("--s3-kms-key-id", action=u"store", dest="s3_kms_key_id")
     parser.add_option("--s3-kms-grant", action=u"store", dest="s3_kms_grant")
 
+<<<<<<< TREE
     # Option to specify a Swift container storage policy.
     parser.add_option(u"--swift-storage-policy", type=u"string", metavar=_(u"policy"))
 
@@ -606,6 +645,8 @@
     # Standard storage tier used for storring backup files (Hot|Cool|Archive).
     parser.add_option(u"--azure-blob-tier", type=u"string", metavar=_(u"Hot|Cool|Archive"))
 
+=======
+>>>>>>> MERGE-SOURCE
     # scp command to use (ssh pexpect backend)
     parser.add_option(u"--scp-command", metavar=_(u"command"))
 
@@ -670,18 +711,21 @@
     parser.add_option(u"--volsize", type=u"int", action=u"callback", metavar=_(u"number"),
                       callback=lambda o, s, v, p: setattr(p.values, u"volsize", v * 1024 * 1024))
 
+<<<<<<< TREE
     # If set, collect only the file status, not the whole root.
     parser.add_option(u"--file-changed", action=u"callback", type=u"file",
                       metavar=_(u"path"), dest=u"file_changed",
                       callback=lambda o, s, v, p: setattr(p.values, u"file_changed", v.rstrip(u'/')))
 
+=======
+>>>>>>> MERGE-SOURCE
     # delay time before next try after a failure of a backend operation
     # TRANSL: Used in usage help. Example:
     # --backend-retry-delay <seconds>
     parser.add_option(u"--backend-retry-delay", type=u"int", metavar=_(u"seconds"))
 
     # parse the options
-    (options, args) = parser.parse_args(arglist)
+    (options, args) = parser.parse_args()
 
     # Copy all arguments and their values to the globals module.  Don't copy
     # attributes that are 'hidden' (start with an underscore) or whose name is
@@ -751,9 +795,12 @@
         num_expect = 1
     elif cmd == u"verify":
         verify = True
+<<<<<<< TREE
     elif cmd == u"replicate":
         replicate = True
         num_expect = 2
+=======
+>>>>>>> MERGE-SOURCE
 
     if len(args) != num_expect:
         command_line_error(u"Expected %d args, got %d" % (num_expect, len(args)))
@@ -772,12 +819,16 @@
     elif len(args) == 1:
         backend_url = args[0]
     elif len(args) == 2:
+<<<<<<< TREE
         if replicate:
             if not backend.is_backend_url(args[0]) or not backend.is_backend_url(args[1]):
                 command_line_error(u"Two URLs expected for replicate.")
             src_backend_url, backend_url = args[0], args[1]
         else:
             lpath, backend_url = args_to_path_backend(args[0], args[1])  # @UnusedVariable
+=======
+        lpath, backend_url = args_to_path_backend(args[0], args[1])  # @UnusedVariable
+>>>>>>> MERGE-SOURCE
     else:
         command_line_error(u"Too many arguments")
 
@@ -788,8 +839,13 @@
     set_archive_dir(expand_archive_dir(globals.archive_dir,
                                        globals.backup_name))
 
+<<<<<<< TREE
     log.Info(_(u"Using archive dir: %s") % (globals.archive_dir_path.uc_name,))
     log.Info(_(u"Using backup name: %s") % (globals.backup_name,))
+=======
+    log.Info(_("Using archive dir: %s") % (util.ufn(globals.archive_dir.name),))
+    log.Info(_("Using backup name: %s") % (globals.backup_name,))
+>>>>>>> MERGE-SOURCE
 
     return args
 
@@ -952,7 +1008,6 @@
   duplicity remove-older-than %(time)s [%(options)s] %(target_url)s
   duplicity remove-all-but-n-full %(count)s [%(options)s] %(target_url)s
   duplicity remove-all-inc-of-but-n-full %(count)s [%(options)s] %(target_url)s
-  duplicity replicate %(source_url)s %(target_url)s
 
 """ % dict
 
@@ -972,7 +1027,6 @@
   scp://%(user)s[:%(password)s]@%(other_host)s[:%(port)s]/%(some_dir)s
   ssh://%(user)s[:%(password)s]@%(other_host)s[:%(port)s]/%(some_dir)s
   swift://%(container_name)s
-  pca://%(container_name)s
   tahoe://%(alias)s/%(directory)s
   webdav://%(user)s[:%(password)s]@%(other_host)s/%(some_dir)s
   webdavs://%(user)s[:%(password)s]@%(other_host)s/%(some_dir)s
@@ -999,8 +1053,7 @@
   remove-older-than <%(time)s> <%(target_url)s>
   remove-all-but-n-full <%(count)s> <%(target_url)s>
   remove-all-inc-of-but-n-full <%(count)s> <%(target_url)s>
-  verify <%(target_url)s> <%(source_dir)s>
-  replicate <%(source_url)s> <%(target_url)s>""" % dict
+  verify <%(target_url)s> <%(source_dir)s>""" % dict
 
     return msg
 
@@ -1012,12 +1065,19 @@
             os.makedirs(dirstring)
         except Exception:
             pass
+<<<<<<< TREE
     archive_dir_path = path.Path(dirstring)
     if not archive_dir_path.isdir():
         log.FatalError(_(u"Specified archive directory '%s' does not exist, "
                          u"or is not a directory") % (archive_dir_path.uc_name,),
+=======
+    archive_dir = path.Path(dirstring)
+    if not archive_dir.isdir():
+        log.FatalError(_("Specified archive directory '%s' does not exist, "
+                         "or is not a directory") % (util.ufn(archive_dir.name),),
+>>>>>>> MERGE-SOURCE
                        log.ErrorCode.bad_archive_dir)
-    globals.archive_dir_path = archive_dir_path
+    globals.archive_dir = archive_dir
 
 
 def set_sign_key(sign_key):
@@ -1102,8 +1162,13 @@
 
 
 def check_consistency(action):
+<<<<<<< TREE
     u"""Final consistency check, see if something wrong with command line"""
     global full_backup, select_opts, list_current, collection_status, cleanup, replicate
+=======
+    """Final consistency check, see if something wrong with command line"""
+    global full_backup, select_opts, list_current
+>>>>>>> MERGE-SOURCE
 
     def assert_only_one(arglist):
         u"""Raises error if two or more of the elements of arglist are true"""
@@ -1113,9 +1178,15 @@
                 n += 1
         assert n <= 1, u"Invalid syntax, two conflicting modes specified"
 
+<<<<<<< TREE
     if action in [u"list-current", u"collection-status",
                   u"cleanup", u"remove-old", u"remove-all-but-n-full", u"remove-all-inc-of-but-n-full", u"replicate"]:
         assert_only_one([list_current, collection_status, cleanup, replicate,
+=======
+    if action in ["list-current", "collection-status",
+                  "cleanup", "remove-old", "remove-all-but-n-full", "remove-all-inc-of-but-n-full"]:
+        assert_only_one([list_current, collection_status, cleanup,
+>>>>>>> MERGE-SOURCE
                          globals.remove_time is not None])
     elif action == u"restore" or action == u"verify":
         if full_backup:
@@ -1161,8 +1232,14 @@
             sign_key=src.sign_key,
             recipients=src.recipients,
             hidden_recipients=src.hidden_recipients)
+<<<<<<< TREE
     log.Debug(_(u"GPG binary is %s, version %s") %
               ((globals.gpg_binary or u'gpg'), globals.gpg_profile.gpg_version))
+=======
+    log.Debug(_("GPG binary is %s, version %s") %
+              ((globals.gpg_binary or 'gpg'),
+               "%d.%d.%d" % globals.gpg_profile.gpg_version))
+>>>>>>> MERGE-SOURCE
 
     # we can now try to import all the backends
     backend.import_backends()
@@ -1193,11 +1270,22 @@
 "file:///usr/local".  See the man page for more information.""") % (args[0],),
                            log.ErrorCode.bad_url)
     elif len(args) == 2:
+<<<<<<< TREE
         if replicate:
             globals.src_backend = backend.get_backend(args[0])
             globals.backend = backend.get_backend(args[1])
             action = u"replicate"
+=======
+        # Figure out whether backup or restore
+        backup, local_pathname = set_backend(args[0], args[1])
+        if backup:
+            if full_backup:
+                action = "full"
+            else:
+                action = "inc"
+>>>>>>> MERGE-SOURCE
         else:
+<<<<<<< TREE
             # Figure out whether backup or restore
             backup, local_pathname = set_backend(args[0], args[1])
             if backup:
@@ -1205,15 +1293,29 @@
                     action = u"full"
                 else:
                     action = u"inc"
+=======
+            if verify:
+                action = "verify"
+>>>>>>> MERGE-SOURCE
             else:
+<<<<<<< TREE
                 if verify:
                     action = u"verify"
                 else:
                     action = u"restore"
+=======
+                action = "restore"
+>>>>>>> MERGE-SOURCE
 
+<<<<<<< TREE
             process_local_dir(action, local_pathname)
             if action in [u'full', u'inc', u'verify']:
                 set_selection()
+=======
+        process_local_dir(action, local_pathname)
+        if action in ['full', 'inc', 'verify']:
+            set_selection()
+>>>>>>> MERGE-SOURCE
     elif len(args) > 2:
         raise AssertionError(u"this code should not be reachable")
 

=== modified file 'duplicity/compilec.py'
--- duplicity/compilec.py	2018-12-04 20:50:28 +0000
+++ duplicity/compilec.py	2019-05-20 08:57:58 +0000
@@ -22,6 +22,7 @@
 
 import sys
 import os
+<<<<<<< TREE
 
 # Avoid conflict on python 2 with collections.py vs. built-in collections module
 sp = sys.path
@@ -29,6 +30,9 @@
 #  https://github.com/PyCQA/pylint/issues/73
 from distutils.core import setup, Extension  # pylint: disable=import-error,no-name-in-module
 sys.path = sp
+=======
+from distutils.core import setup, Extension
+>>>>>>> MERGE-SOURCE
 
 assert len(sys.argv) == 1
 sys.argv.append("build")

=== modified file 'duplicity/diffdir.py'
--- duplicity/diffdir.py	2018-11-29 19:00:15 +0000
+++ duplicity/diffdir.py	2019-05-20 08:57:58 +0000
@@ -92,7 +92,7 @@
     """
     global stats
     stats = statistics.StatsDeltaProcess()
-    if isinstance(dirsig_fileobj_list, list):
+    if isinstance(dirsig_fileobj_list, types.ListType):
         sig_iter = combine_path_iters([sigtar2path_iter(x) for x
                                        in dirsig_fileobj_list])
     else:
@@ -227,7 +227,7 @@
                     else:
                         ti.name = b"deleted/" + b"/".join(sig_path.index)
                     sigTarFile.addfile(ti)
-                stats.add_deleted_file(sig_path)
+                stats.add_deleted_file()
                 yield ROPath(sig_path.index)
         elif not sig_path or new_path != sig_path:
             # Must calculate new signature and create delta
@@ -294,7 +294,7 @@
     while 1:
         if not relem1:
             try:
-                relem1 = next(riter1)
+                relem1 = riter1.next()
             except StopIteration:
                 if relem2:
                     yield (None, relem2)
@@ -304,7 +304,7 @@
             index1 = relem1.index
         if not relem2:
             try:
-                relem2 = next(riter2)
+                relem2 = riter2.next()
             except StopIteration:
                 if relem1:
                     yield (relem1, None)
@@ -345,7 +345,7 @@
         Represent the next element as a triple, to help sorting
         """
         try:
-            path = next(path_iter_list[iter_index])
+            path = path_iter_list[iter_index].next()
         except StopIteration:
             return None
         return (path.index, iter_index, path)
@@ -385,7 +385,7 @@
     """
     global stats
     stats = statistics.StatsDeltaProcess()
-    if isinstance(sig_infp_list, list):
+    if isinstance(sig_infp_list, types.ListType):
         sig_path_iter = get_combined_path_iter(sig_infp_list)
     else:
         sig_path_iter = sigtar2path_iter(sig_infp_list)
@@ -541,7 +541,11 @@
             result = self.process_continued()  # pylint: disable=assignment-from-no-return
         else:
             # Below a StopIteration exception will just be passed upwards
+<<<<<<< TREE
             result = self.process(next(self.input_iter))  # pylint: disable=assignment-from-no-return
+=======
+            result = self.process(self.input_iter.next())
+>>>>>>> MERGE-SOURCE
         block_number = self.process_next_vol_number
         self.offset += len(result.data)
         self.previous_index = result.index

=== modified file 'duplicity/dup_threading.py'
--- duplicity/dup_threading.py	2018-11-29 19:00:15 +0000
+++ duplicity/dup_threading.py	2019-05-20 08:57:58 +0000
@@ -28,12 +28,15 @@
 at least python 2.5.)
 """
 
+<<<<<<< TREE
 from future import standard_library
 standard_library.install_aliases()
 from builtins import object
 import sys
 from duplicity import errors
 
+=======
+>>>>>>> MERGE-SOURCE
 _threading_supported = True
 
 try:
@@ -48,6 +51,10 @@
     import dummy_threading as threading
     _threading_supported = False
 
+import sys
+
+from duplicity import errors
+
 
 def threading_supported():
     u"""

=== modified file 'duplicity/dup_time.py'
=== modified file 'duplicity/file_naming.py'
--- duplicity/file_naming.py	2018-11-29 19:00:15 +0000
+++ duplicity/file_naming.py	2019-05-20 08:57:58 +0000
@@ -448,11 +448,3 @@
         self.encrypted = encrypted  # true if gpg encrypted
 
         self.partial = partial
-
-    def __eq__(self, other):
-        return self.type == other.type and \
-            self.manifest == other.manifest and \
-            self.time == other.time and \
-            self.start_time == other.start_time and \
-            self.end_time == other.end_time and \
-            self.partial == other.partial

=== modified file 'duplicity/globals.py'
--- duplicity/globals.py	2019-05-17 16:41:49 +0000
+++ duplicity/globals.py	2019-05-20 08:57:58 +0000
@@ -58,9 +58,14 @@
 # contains the signatures and manifests of the relevent backup
 # collection), and for checkpoint state between volumes.
 # NOTE: this gets expanded in duplicity.commandline
+<<<<<<< TREE
 os.environ[u"XDG_CACHE_HOME"] = os.getenv(u"XDG_CACHE_HOME", os.path.expanduser(u"~/.cache"))
 archive_dir = os.path.expandvars(u"$XDG_CACHE_HOME/duplicity")
 archive_dir_path = None
+=======
+os.environ["XDG_CACHE_HOME"] = os.getenv("XDG_CACHE_HOME", os.path.expanduser("~/.cache"))
+archive_dir = os.path.expandvars("$XDG_CACHE_HOME/duplicity")
+>>>>>>> MERGE-SOURCE
 
 # config dir for future use
 os.environ[u"XDG_CONFIG_HOME"] = os.getenv(u"XDG_CONFIG_HOME", os.path.expanduser(u"~/.config"))
@@ -223,6 +228,7 @@
 # Use server side encryption in s3
 s3_use_sse = False
 
+<<<<<<< TREE
 # Use server side kms encryption in s3
 s3_use_sse_kms = False
 s3_kms_key_id = None
@@ -243,6 +249,8 @@
 # Standard storage tier used for storring backup blobs (Hot|Cool|Archive).
 azure_blob_tier = None
 
+=======
+>>>>>>> MERGE-SOURCE
 # Whether to use the full email address as the user name when
 # logging into an imap server. If false just the user name
 # part of the email address is used.
@@ -255,6 +263,9 @@
 # Sync partial metadata by default
 metadata_sync_mode = u"partial"
 
+# Sync all metadata by default
+metadata_sync_mode = "full"
+
 # Whether the old filename format is in effect.
 old_filenames = False
 
@@ -327,11 +338,9 @@
 # Whether to enable gio backend
 use_gio = False
 
-# If set, collect only the file status, not the whole root.
-file_changed = None
-
 # delay (in seconds) before next operation after failure
 backend_retry_delay = 30
+<<<<<<< TREE
 
 # default filesystem encoding
 # In Python 2 it seems that sys.getfilesystemencoding() will normally return
@@ -339,3 +348,12 @@
 # either 'ascii' or None.  Both are bogus, so default to 'utf-8' if it does.
 fsencoding = sys.getfilesystemencoding()
 fsencoding = fsencoding if fsencoding not in [u'ascii', u'ANSI_X3.4-1968', None] else u'utf-8'
+=======
+
+# default filesystem encoding
+# In Python 2 it seems that sys.getfilesystemencoding() will normally return
+# 'utf-8' or some other sane encoding, but will sometimes fail and return
+# either 'ascii' or None.  Both are bogus, so default to 'utf-8' if it does.
+fsencoding = sys.getfilesystemencoding()
+fsencoding = fsencoding if fsencoding not in ['ascii', None] else 'utf-8'
+>>>>>>> MERGE-SOURCE

=== modified file 'duplicity/globmatch.py'
--- duplicity/globmatch.py	2018-11-29 19:00:15 +0000
+++ duplicity/globmatch.py	2019-05-20 08:57:58 +0000
@@ -56,8 +56,13 @@
     return list(map(glob_to_regex, prefixes))
 
 
+<<<<<<< TREE
 def select_fn_from_glob(glob_str, include, ignore_case=False):
     u"""Return a function test_fn(path) which
+=======
+def path_matches_glob_fn(glob_str, include, ignore_case=False):
+    """Return a function test_fn(path) which
+>>>>>>> MERGE-SOURCE
     tests whether path matches glob, as per the Unix shell rules, taking as
     arguments a path, a glob string and include (0 indicating that the glob
     string is an exclude glob and 1 indicating that it is an include glob,
@@ -66,16 +71,18 @@
     1 - if the file should be included
     2 - if the folder should be scanned for any included/excluded files
     None - if the selection function has nothing to say about the file
-
-    Note: including a folder implicitly includes everything within it.
     """
     assert isinstance(glob_str, str)
     glob_ends_w_slash = False
 
+<<<<<<< TREE
     if glob_str == u"/":
         # If the glob string is '/', it implicitly includes everything
         glob_str = u"/**"
     elif glob_str[-1] == u"/":
+=======
+    if glob_str != "/" and glob_str[-1] == "/":
+>>>>>>> MERGE-SOURCE
         glob_ends_w_slash = True
         # Remove trailing / from directory name (unless that is the entire
         # string)
@@ -93,9 +100,14 @@
     # string translated into regex
     # ($|/) nothing must follow except for the end of the string, newline or /
     # Note that the "/" at the end of the regex means that it will match
+<<<<<<< TREE
     # if the glob matches a parent folders of path, i.e. including a folder
     # includes everything within it.
     glob_comp_re = re_comp(u"^%s($|/)" % glob_to_regex(glob_str))
+=======
+    # if the glob matches a parent folders of path
+    glob_comp_re = re_comp("^%s($|/)" % glob_to_regex(glob_str))
+>>>>>>> MERGE-SOURCE
 
     if glob_ends_w_slash:
         # Creates a version of glob_comp_re that does not match folder contents
@@ -115,12 +127,16 @@
                            u"|".join(_glob_get_prefix_regexs(glob_str)))
 
     def test_fn(path):
+<<<<<<< TREE
         assert not path.uc_name[-1] == u"/" or path.uc_name == u"/", \
             u"path.name should never end in '/' during normal operation for " \
             u"normal paths (except '/' alone)\n" \
             u"path.name here is " + path.uc_name + u" and glob is " + glob_str
 
         if glob_comp_re.match(path.uc_name):
+=======
+        if glob_comp_re.match(path.name):
+>>>>>>> MERGE-SOURCE
             # Path matches glob, or is contained within a matching folder
             if not glob_ends_w_slash:
                 return include
@@ -151,7 +167,7 @@
     u"""Returned regular expression equivalent to shell glob pat
 
     Currently only the ?, *, [], and ** expressions are supported.
-    Ranges like [a-z] are currently unsupported.  There is no
+    Ranges like [a-z] are also currently unsupported.  There is no
     way to quote these special characters.
 
     This function taken with minor modifications from efnmatch.py

=== modified file 'duplicity/gpg.py'
--- duplicity/gpg.py	2018-11-29 19:00:15 +0000
+++ duplicity/gpg.py	2019-05-20 08:57:58 +0000
@@ -94,12 +94,17 @@
 
         self.gpg_version = self.get_gpg_version(globals.gpg_binary)
 
+<<<<<<< TREE
     rc = re.compile
     _version_re = rc(b'^gpg.*\\(GnuPG(?:/MacGPG2)?\\) (?P<maj>[0-9]+)\\.(?P<min>[0-9]+)\\.(?P<bug>[0-9]+)(-.+)?$')
+=======
+    _version_re = re.compile(r'^gpg.*\(GnuPG(?:/MacGPG2)?\) (?P<maj>[0-9]+)\.(?P<min>[0-9]+)\.(?P<bug>[0-9]+)(-.+)?$')
+>>>>>>> MERGE-SOURCE
 
     def get_gpg_version(self, binary):
         gnupg = gpginterface.GnuPG()
         if binary is not None:
+<<<<<<< TREE
             gnupg.call = binary
 
         # user supplied options
@@ -110,14 +115,35 @@
         # get gpg version
         res = gnupg.run([u"--version"], create_fhs=[u"stdout"])
         line = res.handles[u"stdout"].readline().rstrip()
+=======
+            gnupg.call = binary
+
+        # user supplied options
+        if globals.gpg_options:
+            for opt in globals.gpg_options.split():
+                gnupg.options.extra_args.append(opt)
+
+        # get gpg version
+        res = gnupg.run(["--version"], create_fhs=["stdout"])
+        line = res.handles["stdout"].readline().rstrip()
+>>>>>>> MERGE-SOURCE
         m = self._version_re.search(line)
         if m is not None:
+<<<<<<< TREE
             return (int(m.group(u"maj")), int(m.group(u"min")), int(m.group(u"bug")))
         raise GPGError(u"failed to determine gnupg version of %s from %s" % (binary, line))
 
 
 class GPGFile(object):
     u"""
+=======
+            return (int(m.group("maj")), int(m.group("min")), int(m.group("bug")))
+        raise GPGError("failed to determine gnupg version of %s from %s" % (binary, line))
+
+
+class GPGFile:
+    """
+>>>>>>> MERGE-SOURCE
     File-like object that encrypts decrypts another file on the fly
     """
     def __init__(self, encrypt, encrypt_path, profile):
@@ -146,8 +172,13 @@
         if globals.gpg_binary is not None:
             gnupg.call = globals.gpg_binary
         gnupg.options.meta_interactive = 0
+<<<<<<< TREE
         gnupg.options.extra_args.append(u'--no-secmem-warning')
         gnupg.options.extra_args.append(u'--ignore-mdc-error')
+=======
+        gnupg.options.extra_args.append('--no-secmem-warning')
+        gnupg.options.extra_args.append('--ignore-mdc-error')
+>>>>>>> MERGE-SOURCE
 
         # Support three versions of gpg present 1.x, 2.0.x, 2.1.x
         if profile.gpg_version[:1] == (1,):

=== modified file 'duplicity/gpginterface.py'
--- duplicity/gpginterface.py	2018-11-29 19:00:15 +0000
+++ duplicity/gpginterface.py	2019-05-20 08:57:58 +0000
@@ -711,7 +711,6 @@
     from . import gpginterface
     return doctest.testmod(GnuPGInterface)
 
-
 # deprecated
 GnuPGInterface = GnuPG
 

=== modified file 'duplicity/lazy.py'
--- duplicity/lazy.py	2019-02-21 21:48:53 +0000
+++ duplicity/lazy.py	2019-05-20 08:57:58 +0000
@@ -19,17 +19,18 @@
 # along with duplicity; if not, write to the Free Software Foundation,
 # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
+<<<<<<< TREE
 u"""Define some lazy data structures and functions acting on them"""
 from __future__ import print_function
+=======
+"""Define some lazy data structures and functions acting on them"""
+>>>>>>> MERGE-SOURCE
 
 from builtins import map
 from builtins import next
 from builtins import range
 from builtins import object
 import os
-from duplicity import log
-from duplicity import robust
-from duplicity import util
 
 
 class Iter(object):
@@ -84,21 +85,33 @@
         """
         for i1 in iter1:
             try:
-                i2 = next(iter2)
+                i2 = iter2.next()
             except StopIteration:
                 if verbose:
+<<<<<<< TREE
                     print(u"End when i1 = %s" % (i1,))
+=======
+                    print "End when i1 = %s" % (i1,)
+>>>>>>> MERGE-SOURCE
                 return None
             if not operator(i1, i2):
                 if verbose:
+<<<<<<< TREE
                     print(u"%s not equal to %s" % (i1, i2))
+=======
+                    print "%s not equal to %s" % (i1, i2)
+>>>>>>> MERGE-SOURCE
                 return None
         try:
-            i2 = next(iter2)
+            i2 = iter2.next()
         except StopIteration:
             return 1
         if verbose:
+<<<<<<< TREE
             print(u"End when i2 = %s" % (i2,))
+=======
+            print "End when i2 = %s" % (i2,)
+>>>>>>> MERGE-SOURCE
         return None
 
     @staticmethod
@@ -125,7 +138,7 @@
         i = 0
         while 1:
             try:
-                next(iter)
+                iter.next()
             except StopIteration:
                 return i
             i = i + 1
@@ -134,20 +147,20 @@
     def foldr(f, default, iter):  # @NoSelf
         u"""foldr the "fundamental list recursion operator"?"""
         try:
-            next_item = next(iter)
+            next = iter.next()
         except StopIteration:
             return default
-        return f(next_item, Iter.foldr(f, default, iter))
+        return f(next, Iter.foldr(f, default, iter))
 
     @staticmethod
     def foldl(f, default, iter):  # @NoSelf
         u"""the fundamental list iteration operator.."""
         while 1:
             try:
-                next_item = next(iter)
+                next = iter.next()
             except StopIteration:
                 return default
-            default = f(default, next_item)
+            default = f(default, next)
 
     @staticmethod
     def multiplex(iter, num_of_forks, final_func=None, closing_func=None):  # @NoSelf
@@ -182,7 +195,7 @@
             u"""Return the next element requested by fork_num"""
             if forkposition[fork_num] == -1:
                 try:
-                    buffer.insert(0, next(iter))
+                    buffer.insert(0, iter.next())
                 except StopIteration:
                     # call closing_func if necessary
                     if (forkposition == starting_forkposition and
@@ -234,10 +247,14 @@
         while(1):
             if self.a_leading_by >= 0:
                 # a is in front, add new element
+<<<<<<< TREE
                 try:
                     elem = next(iter)
                 except StopIteration:
                     return
+=======
+                elem = iter.next()  # exception will be passed
+>>>>>>> MERGE-SOURCE
                 buf.append(elem)
             else:
                 # b is in front, subtract an element
@@ -251,10 +268,14 @@
         while(1):
             if self.a_leading_by <= 0:
                 # b is in front, add new element
+<<<<<<< TREE
                 try:
                     elem = next(iter)
                 except StopIteration:
                     return
+=======
+                elem = iter.next()  # exception will be passed
+>>>>>>> MERGE-SOURCE
                 buf.append(elem)
             else:
                 # a is in front, subtract an element
@@ -437,3 +458,8 @@
         log.Warn(_(u"Skipping %s because of previous error") % util.fsdecode(index_str),
                  log.WarningCode.process_skipped,
                  util.escape(index_str))
+
+
+from duplicity import log
+from duplicity import robust
+from duplicity import util

=== modified file 'duplicity/log.py'
--- duplicity/log.py	2019-01-25 17:08:40 +0000
+++ duplicity/log.py	2019-05-20 08:57:58 +0000
@@ -224,11 +224,14 @@
         u'\n' + u'\n'.join(col_stats.to_log_info()), force_print)
 
 
+<<<<<<< TREE
 def PrintCollectionFileChangedStatus(col_stats, filepath, force_print=False):
     u"""Prints a collection status to the log"""
     Log(str(col_stats.get_file_changed_record(filepath)), 8, InfoCode.collection_status, None, force_print)
 
 
+=======
+>>>>>>> MERGE-SOURCE
 def Notice(s):
     u"""Shortcut used for notice messages (verbosity 3, the default)."""
     Log(s, NOTICE)

=== modified file 'duplicity/manifest.py'
--- duplicity/manifest.py	2018-11-29 19:00:15 +0000
+++ duplicity/manifest.py	2019-05-20 08:57:58 +0000
@@ -61,7 +61,6 @@
         self.local_dirname = None
         self.volume_info_dict = {}  # dictionary vol numbers -> vol infos
         self.fh = fh
-        self.files_changed = []
 
     def set_dirinfo(self):
         u"""
@@ -118,6 +117,7 @@
                          u"--allow-source-mismatch switch to avoid seeing this "
                          u"message"), code, code_extra)
 
+<<<<<<< TREE
     def set_files_changed_info(self, files_changed):
         if files_changed:
             self.files_changed = files_changed
@@ -127,6 +127,8 @@
             for fileinfo in self.files_changed:
                 self.fh.write(b"    %-7s  %s\n" % (fileinfo[1], Quote(fileinfo[0])))
 
+=======
+>>>>>>> MERGE-SOURCE
     def add_volume_info(self, vi):
         u"""
         Add volume info vi to manifest and write to manifest
@@ -168,11 +170,15 @@
         if self.local_dirname:
             result += b"Localdir %s\n" % Quote(self.local_dirname)
 
+<<<<<<< TREE
         result += b"Filelist %d\n" % len(self.files_changed)
         for fileinfo in self.files_changed:
             result += b"    %-7s  %s\n" % (fileinfo[1], Quote(fileinfo[0]))
 
         vol_num_list = list(self.volume_info_dict.keys())
+=======
+        vol_num_list = self.volume_info_dict.keys()
+>>>>>>> MERGE-SOURCE
         vol_num_list.sort()
 
         def vol_num_to_string(vol_num):
@@ -199,11 +205,17 @@
                 return None
             else:
                 return Unquote(m.group(2))
+<<<<<<< TREE
         self.hostname = get_field(u"hostname")
         if self.hostname is not None:
             self.hostname = self.hostname.decode()
         self.local_dirname = get_field(u"localdir")
 
+=======
+        self.hostname = get_field("hostname")
+        self.local_dirname = get_field("localdir")
+
+>>>>>>> MERGE-SOURCE
         highest_vol = 0
         latest_vol = 0
         vi_regexp = re.compile(b"(?:^|\\n)(volume\\s.*(?:\\n.*)*?)(?=\\nvolume\\s|$)", re.I)
@@ -220,6 +232,7 @@
         # want to keep vol3's info.
         for i in range(latest_vol + 1, highest_vol + 1):
             self.del_volume_info(i)
+<<<<<<< TREE
         log.Info(_(u"Found %s volumes in manifest") % latest_vol)
 
         # Get file changed list - not needed if --file-changed not present
@@ -241,11 +254,12 @@
                             (self.fh.base if self.fh else u"", filecount, len(self.files_changed))))
                 self.corrupt_filelist = True
 
+=======
+        log.Info(_("Found %s volumes in manifest") % latest_vol)
+
+>>>>>>> MERGE-SOURCE
         return self
 
-    def get_files_changed(self):
-        return self.files_changed
-
     def __eq__(self, other):
         u"""
         Two manifests are equal if they contain the same volume infos

=== modified file 'duplicity/patchdir.py'
--- duplicity/patchdir.py	2019-05-09 20:27:51 +0000
+++ duplicity/patchdir.py	2019-05-20 08:57:58 +0000
@@ -123,10 +123,14 @@
     # The next tar_info is stored in this one element list so
     # Multivol_Filelike below can update it.  Any StopIterations will
     # be passed upwards.
+<<<<<<< TREE
     try:
         tarinfo_list = [next(tar_iter)]
     except StopIteration:
         return
+=======
+    tarinfo_list = [tar_iter.next()]
+>>>>>>> MERGE-SOURCE
 
     while 1:
         # This section relevant when a multivol diff is last in tar
@@ -152,10 +156,14 @@
             else:
                 ropath.setfileobj(diff_tarfile.extractfile(tarinfo_list[0]))
         yield ropath
+<<<<<<< TREE
         try:
             tarinfo_list[0] = next(tar_iter)
         except StopIteration:
             return
+=======
+        tarinfo_list[0] = tar_iter.next()
+>>>>>>> MERGE-SOURCE
 
 
 def get_index_from_tarinfo(tarinfo):
@@ -250,7 +258,7 @@
         fp.close()
 
         try:
-            self.tarinfo_list[0] = next(self.tar_iter)
+            self.tarinfo_list[0] = self.tar_iter.next()
         except StopIteration:
             self.tarinfo_list[0] = None
             self.at_end = 1
@@ -346,8 +354,13 @@
         u"""Set tarfile from next file object, or raise StopIteration"""
         if self.current_fp:
             assert not self.current_fp.close()
+<<<<<<< TREE
         self.current_fp = next(self.fileobj_iter)
         self.tarfile = util.make_tarfile(u"r", self.current_fp)
+=======
+        self.current_fp = self.fileobj_iter.next()
+        self.tarfile = util.make_tarfile("r", self.current_fp)
+>>>>>>> MERGE-SOURCE
         self.tar_iter = iter(self.tarfile)
 
     def __next__(self):
@@ -357,11 +370,11 @@
             except StopIteration:
                 return
         try:
-            return next(self.tar_iter)
+            return self.tar_iter.next()
         except StopIteration:
             assert not self.tarfile.close()
             self.set_tarfile()
-            return next(self.tar_iter)
+            return self.tar_iter.next()
 
     def extractfile(self, tarinfo):
         u"""Return data associated with given tarinfo"""
@@ -394,7 +407,7 @@
         for i in range(iter_num):
             if not overflow[i] and elems[i] is None:
                 try:
-                    elems[i] = next(iter_list[i])
+                    elems[i] = iter_list[i].next()
                 except StopIteration:
                     overflow[i] = 1
                     elems[i] = None
@@ -461,7 +474,7 @@
     def __eq__(self, other):
         if isinstance(other, IndexedTuple):
             return self.index == other.index and self.data == other.data
-        elif isinstance(other, tuple):
+        elif isinstance(other, types.TupleType):
             return self.data == other
         else:
             return None

=== modified file 'duplicity/progress.py'
--- duplicity/progress.py	2018-11-29 19:00:15 +0000
+++ duplicity/progress.py	2019-05-20 08:57:58 +0000
@@ -66,7 +66,11 @@
         # If restarting Full, discard marshalled data and start over
         if globals.restart is not None and globals.restart.start_vol >= 1:
             try:
+<<<<<<< TREE
                 progressfd = open(u'%s/progress' % globals.archive_dir_path.name, u'r')
+=======
+                progressfd = open('%s/progress' % globals.archive_dir.name, 'r')
+>>>>>>> MERGE-SOURCE
                 snapshot = pickle.load(progressfd)
                 progressfd.close()
             except:
@@ -80,7 +84,11 @@
         u"""
         Serializes object to cache
         """
+<<<<<<< TREE
         progressfd = open(b'%s/progress' % globals.archive_dir_path.name, u'wb+')
+=======
+        progressfd = open('%s/progress' % globals.archive_dir.name, 'w+')
+>>>>>>> MERGE-SOURCE
         pickle.dump(self, progressfd)
         progressfd.close()
 

=== modified file 'duplicity/robust.py'
--- duplicity/robust.py	2018-11-29 19:00:15 +0000
+++ duplicity/robust.py	2019-05-20 08:57:58 +0000
@@ -20,9 +20,6 @@
 # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
 import errno
-from duplicity import librsync
-from duplicity import log
-from duplicity import util
 
 tmp_file_index = 1
 
@@ -66,3 +63,7 @@
     dir_listing = check_common_error(error_handler, path.listdir)
     dir_listing.sort()
     return dir_listing
+
+from duplicity import librsync
+from duplicity import log
+from duplicity import util

=== modified file 'duplicity/selection.py'
--- duplicity/selection.py	2018-11-29 19:00:15 +0000
+++ duplicity/selection.py	2019-05-20 08:57:58 +0000
@@ -36,7 +36,7 @@
 from duplicity import diffdir
 from duplicity import util  # @Reimport
 from duplicity.globmatch import GlobbingError, FilePrefixError, \
-    select_fn_from_glob
+    path_matches_glob_fn
 
 u"""Iterate exactly the requested files in a directory
 
@@ -178,7 +178,7 @@
 
         while diryield_stack:
             try:
-                subpath, val = next(diryield_stack[-1])
+                subpath, val = diryield_stack[-1].next()
             except StopIteration:
                 diryield_stack.pop()
                 if delayed_path_stack:
@@ -436,6 +436,9 @@
         assert isinstance(glob_str, str)
         if glob_str == u"**":
             sel_func = lambda path: include
+        elif not self.glob_re.match(glob_str):
+            # normal file
+            sel_func = self.glob_get_filename_sf(glob_str, include)
         else:
             sel_func = self.glob_get_normal_sf(glob_str, include)
 
@@ -480,6 +483,66 @@
                         (include and u"include-if-present" or u"exclude-if-present", filename)
         return sel_func
 
+    def glob_get_filename_sf(self, filename, include):
+        """Get a selection function given a normal filename
+
+        Some of the parsing is better explained in
+        filelist_parse_line.  The reason this is split from normal
+        globbing is things are a lot less complicated if no special
+        globbing characters are used.
+
+        """
+        # Internal. Used by glob_get_sf and unit tests.
+        # ToDo: Make all globbing/non-globbing use same code path
+        # This distinction has bitten us too many times with bugs in one or
+        # the other.
+        match_only_dirs = False
+
+        if filename != "/" and filename[-1] == "/":
+            match_only_dirs = True
+            # Remove trailing / from directory name (unless that is the entire
+            # string)
+            filename = filename[:-1]
+
+        if not filename.startswith(self.prefix):
+            raise FilePrefixError(filename)
+        index = tuple(filter(lambda x: x,
+                             filename[len(self.prefix):].split("/")))
+        return self.glob_get_tuple_sf(index, include, match_only_dirs)
+
+    def glob_get_tuple_sf(self, tuple, include, match_only_dirs=False):
+        """Return selection function based on tuple"""
+        # Internal. Used by glob_get_filename_sf.
+
+        def include_sel_func(path):
+            if len(tuple) == len(path.index) and match_only_dirs and not path.isdir():
+                # If we are assessing the actual directory (rather than the
+                # contents of the directory) and the glob ended with a /,
+                # only match directories
+                return None
+            elif (path.index == tuple[:len(path.index)] or
+                    path.index[:len(tuple)] == tuple):
+                return 1  # /foo/bar implicitly matches /foo, vice-versa
+            else:
+                return None
+
+        def exclude_sel_func(path):
+            if match_only_dirs and not path.isdir():
+                # If the glob ended with a /, only match directories
+                return None
+            elif path.index[:len(tuple)] == tuple:
+                return 0  # /foo excludes /foo/bar, not vice-versa
+            else:
+                return None
+
+        if include == 1:
+            sel_func = include_sel_func
+        elif include == 0:
+            sel_func = exclude_sel_func
+        sel_func.exclude = not include
+        sel_func.name = "Tuple select %s" % (tuple,)
+        return sel_func
+
     def glob_get_normal_sf(self, glob_str, include):
         u"""Return selection function based on glob_str
 
@@ -505,14 +568,20 @@
             glob_str = glob_str[len(u"ignorecase:"):].lower()
             ignore_case = True
 
+<<<<<<< TREE
         # Check to make sure prefix is ok, i.e. the glob string is within
         # the root folder being backed up
         file_prefix_selection = select_fn_from_glob(glob_str, include=1)(self.rootpath)
         if not file_prefix_selection:
             # file_prefix_selection == 1 (include) or 2 (scan)
             raise FilePrefixError(glob_str)
+=======
+        # Check to make sure prefix is ok
+        if not path_matches_glob_fn(glob_str, include=1)(self.rootpath):
+            raise FilePrefixError(glob_str)
+>>>>>>> MERGE-SOURCE
 
-        return select_fn_from_glob(glob_str, include, ignore_case)
+        return path_matches_glob_fn(glob_str, include, ignore_case)
 
     def exclude_older_get_sf(self, date):
         u"""Return selection function based on files older than modification date """

=== modified file 'duplicity/statistics.py'
--- duplicity/statistics.py	2019-03-10 22:58:32 +0000
+++ duplicity/statistics.py	2019-05-20 08:57:58 +0000
@@ -316,7 +316,6 @@
             self.__dict__[attr] = 0
         self.Errors = 0
         self.StartTime = time.time()
-        self.files_changed = []
 
     def add_new_file(self, path):
         u"""Add stats of new file path to statistics"""
@@ -326,7 +325,10 @@
         self.NewFiles += 1
         self.NewFileSize += filesize
         self.DeltaEntries += 1
+<<<<<<< TREE
         self.add_delta_entries_file(path, b'new')
+=======
+>>>>>>> MERGE-SOURCE
 
     def add_changed_file(self, path):
         u"""Add stats of file that has changed since last backup"""
@@ -336,13 +338,24 @@
         self.ChangedFiles += 1
         self.ChangedFileSize += filesize
         self.DeltaEntries += 1
+<<<<<<< TREE
         self.add_delta_entries_file(path, b'changed')
+=======
+>>>>>>> MERGE-SOURCE
 
+<<<<<<< TREE
     def add_deleted_file(self, path):
         u"""Add stats of file no longer in source directory"""
+=======
+    def add_deleted_file(self):
+        """Add stats of file no longer in source directory"""
+>>>>>>> MERGE-SOURCE
         self.DeletedFiles += 1  # can't add size since not available
         self.DeltaEntries += 1
+<<<<<<< TREE
         self.add_delta_entries_file(path, b'deleted')
+=======
+>>>>>>> MERGE-SOURCE
 
     def add_unchanged_file(self, path):
         u"""Add stats of file that hasn't changed since last backup"""
@@ -353,10 +366,3 @@
     def close(self):
         u"""End collection of data, set EndTime"""
         self.EndTime = time.time()
-
-    def add_delta_entries_file(self, path, action_type):
-        if path.isreg():
-            self.files_changed.append((path.get_relative_path(), action_type))
-
-    def get_delta_entries_file(self):
-        return self.files_changed

=== modified file 'duplicity/tarfile.py'
--- duplicity/tarfile.py	2018-09-11 21:35:37 +0000
+++ duplicity/tarfile.py	2019-05-20 08:57:58 +0000
@@ -23,7 +23,6 @@
 from __future__ import absolute_import
 
 import tarfile
-from duplicity import cached_ops
 
 # Grab all symbols in tarfile, to try to reproduce its API exactly.
 # from <> import * wouldn't get everything we want, since tarfile defines
@@ -32,4 +31,5 @@
     globals()[sym] = getattr(tarfile, sym)
 
 # Now make sure that we cache the grp/pwd ops
+from duplicity import cached_ops
 grp = pwd = cached_ops

=== modified file 'duplicity/util.py'
--- duplicity/util.py	2019-03-10 21:46:31 +0000
+++ duplicity/util.py	2019-05-20 08:57:58 +0000
@@ -85,15 +85,31 @@
     else:
         msg = msg + u"%-20s %s" % (string.join(lines[:-1], u""), lines[-1])
 
+<<<<<<< TREE
     if sys.version_info.major < 3:
         return msg.decode(u'unicode-escape', u'replace')
     return msg
+=======
+    return msg.decode('unicode-escape', 'replace')
+>>>>>>> MERGE-SOURCE
 
 
 def escape(string):
+<<<<<<< TREE
     u"Convert a (bytes) filename to a format suitable for logging (quoted utf8)"
     string = fsdecode(string).encode(u'unicode-escape', u'replace')
     return u"'%s'" % string.decode(u'utf8', u'replace')
+=======
+    "Convert a (bytes) filename to a format suitable for logging (quoted utf8)"
+    string = ufn(string).encode('unicode-escape', 'replace')
+    return u"'%s'" % string.decode('utf8', 'replace')
+
+
+def ufn(filename):
+    "Convert a (bytes) filename to unicode for printing"
+    assert not isinstance(filename, unicode)
+    return filename.decode(globals.fsencoding, 'replace')
+>>>>>>> MERGE-SOURCE
 
 
 def uindex(index):
@@ -110,6 +126,7 @@
     # non-ascii will cause a UnicodeDecodeError when implicitly decoding to
     # unicode.  So we decode manually, using the filesystem encoding.
     # 99.99% of the time, this will be a fine encoding to use.
+<<<<<<< TREE
     if e.args:
         m = e.args[0]  # exception.message is deprecated, but this is equivalent
         if isinstance(m, str):
@@ -120,6 +137,9 @@
             return fsdecode(m)
     else:
         return None
+=======
+    return ufn(unicode(e).encode('utf-8'))
+>>>>>>> MERGE-SOURCE
 
 
 def maybe_ignore_errors(fn):

=== modified file 'po/bg.po'
--- po/bg.po	2018-02-25 05:44:50 +0000
+++ po/bg.po	2019-05-20 08:57:58 +0000
@@ -6,17 +6,29 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: duplicity\n"
+<<<<<<< TREE
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2018-02-24 06:05+0000\n"
 "PO-Revision-Date: 2018-02-23 13:10+0000\n"
+=======
+"Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
+"POT-Creation-Date: 2018-08-21 10:58-0500\n"
+"PO-Revision-Date: 2014-04-29 08:20+0000\n"
+>>>>>>> MERGE-SOURCE
 "Last-Translator: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
 "Language-Team: Bulgarian <bg@xxxxxx>\n"
+"Language: bg\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
 "X-Launchpad-Export-Date: 2018-02-25 05:44+0000\n"
 "X-Generator: Launchpad (build 18561)\n"
+=======
+"X-Launchpad-Export-Date: 2018-08-12 04:35+0000\n"
+"X-Generator: Launchpad (build 18747)\n"
+>>>>>>> MERGE-SOURCE
 
 #: ../bin/duplicity:133
 msgid "Reuse configured PASSPHRASE as SIGN_PASSPHRASE"
@@ -69,28 +81,53 @@
 "Continuing restart on file %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:331
+=======
+#: ../bin/duplicity:336
+#, python-format
+msgid "Remote filesize %d for %s does not match local size %d, retrying."
+msgstr ""
+
+#: ../bin/duplicity:343
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s was corrupted during upload."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:364
+=======
+#: ../bin/duplicity:376
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Restarting backup, but current encryption settings do not match original "
 "settings"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:387
+=======
+#: ../bin/duplicity:399
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Restarting after volume %s, file %s, block %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:457
+=======
+#: ../bin/duplicity:469
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:606
+=======
+#: ../bin/duplicity:618
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Fatal Error: Unable to start incremental backup.  Old signatures not found "
 "and incremental specified"
@@ -98,101 +135,176 @@
 "Фатална грешка: Не е възможно да започне допълващо архивиране, защото не "
 "съществува предишен пълен архив."
 
+<<<<<<< TREE
 #: ../bin/duplicity:610
+=======
+#: ../bin/duplicity:622
+>>>>>>> MERGE-SOURCE
 msgid "No signatures found, switching to full backup."
 msgstr "Не съществува предишен архив. Ще се създане нов пълен архив."
 
+<<<<<<< TREE
 #: ../bin/duplicity:624
+=======
+#: ../bin/duplicity:636
+>>>>>>> MERGE-SOURCE
 msgid "Backup Statistics"
 msgstr "Статистика:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:730
+=======
+#: ../bin/duplicity:742
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%s not found in archive - no files restored."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:734
+=======
+#: ../bin/duplicity:746
+>>>>>>> MERGE-SOURCE
 msgid "No files found in archive - nothing restored."
 msgstr "В архива няма файлове нищо не беше възстановено."
 
+<<<<<<< TREE
 #: ../bin/duplicity:767
+=======
+#: ../bin/duplicity:779
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d of %d"
 msgstr "Обработен част %d от %d"
 
+<<<<<<< TREE
 #: ../bin/duplicity:801
+=======
+#: ../bin/duplicity:813
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Invalid data - %s hash mismatch for file:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:804
+=======
+#: ../bin/duplicity:816
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Calculated hash: %s"
 msgstr "Изчислена контролна сума: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:805
+=======
+#: ../bin/duplicity:817
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Manifest hash: %s"
 msgstr "Контролна сума на манифеста %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:848
+=======
+#: ../bin/duplicity:860
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Volume was signed by key %s, not %s"
 msgstr "Архивният файл е подписан с ключ %s, а не с %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:880
+=======
+#: ../bin/duplicity:892
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Verify complete: %s, %s."
 msgstr "Проверката завършена: %s, %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:881
+=======
+#: ../bin/duplicity:893
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d file compared"
 msgid_plural "%d files compared"
 msgstr[0] "%d файлът е сравнен"
 msgstr[1] "%d файловете са сравнени"
 
+<<<<<<< TREE
 #: ../bin/duplicity:883
+=======
+#: ../bin/duplicity:895
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d difference found"
 msgid_plural "%d differences found"
 msgstr[0] "намерена е %d разлика"
 msgstr[1] "намерени са %d разлики"
 
+<<<<<<< TREE
 #: ../bin/duplicity:902
+=======
+#: ../bin/duplicity:914
+>>>>>>> MERGE-SOURCE
 msgid "No extraneous files found, nothing deleted in cleanup."
 msgstr ""
 "Не бяха намерени излишни файлове, нищо не беше изтрито по време на "
 "почистването."
 
+<<<<<<< TREE
 #: ../bin/duplicity:907
+=======
+#: ../bin/duplicity:919
+>>>>>>> MERGE-SOURCE
 msgid "Deleting this file from backend:"
 msgid_plural "Deleting these files from backend:"
 msgstr[0] "Файлът ще бъде изтрит:"
 msgstr[1] "Файловете ще бъдат изтрити:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:918
+=======
+#: ../bin/duplicity:930
+>>>>>>> MERGE-SOURCE
 msgid "Found the following file to delete:"
 msgid_plural "Found the following files to delete:"
 msgstr[0] "Открит е следният файл за изтриване:"
 msgstr[1] "Открит са следните файлове за изтриване:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:921
+=======
+#: ../bin/duplicity:933
+>>>>>>> MERGE-SOURCE
 msgid "Run duplicity again with the --force option to actually delete."
 msgstr ""
 "Стартирайте duplicity отново с опция --force, за да се изпълни реалното "
 "изтриване на файлове."
 
+<<<<<<< TREE
 #: ../bin/duplicity:964
+=======
+#: ../bin/duplicity:976
+>>>>>>> MERGE-SOURCE
 msgid "There are backup set(s) at time(s):"
 msgstr "Има архивни копия от дати:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:966
+=======
+#: ../bin/duplicity:978
+>>>>>>> MERGE-SOURCE
 msgid "Which can't be deleted because newer sets depend on them."
-msgstr ""
-"Които не могат да бъдат изтрити защото по-нови архиви зависят от тях."
+msgstr "Които не могат да бъдат изтрити защото по-нови архиви зависят от тях."
 
+<<<<<<< TREE
 #: ../bin/duplicity:970
+=======
+#: ../bin/duplicity:982
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Current active backup chain is older than specified time.  However, it will "
 "not be deleted.  To remove all your backups, manually purge the repository."
@@ -201,16 +313,25 @@
 "бъде изтрито. Ако желаете да изтриете всички съществуващи архиви трябва да "
 "го направите ръчно."
 
+<<<<<<< TREE
 #: ../bin/duplicity:983
+=======
+#: ../bin/duplicity:995
+>>>>>>> MERGE-SOURCE
 msgid "No old backup sets found, nothing deleted."
 msgstr "Не бяха открити стари архивни копия, нищо не беше изтрито."
 
+<<<<<<< TREE
 #: ../bin/duplicity:986
+=======
+#: ../bin/duplicity:998
+>>>>>>> MERGE-SOURCE
 msgid "Deleting backup chain at time:"
 msgid_plural "Deleting backup chains at times:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:998
 #, python-format
 msgid "Deleting any incremental signature chain rooted at %s"
@@ -222,26 +343,52 @@
 msgstr ""
 
 #: ../bin/duplicity:1003
+=======
+#: ../bin/duplicity:1010
+#, python-format
+msgid "Deleting any incremental signature chain rooted at %s"
+msgstr ""
+
+#: ../bin/duplicity:1012
+#, python-format
+msgid "Deleting any incremental backup chain rooted at %s"
+msgstr ""
+
+#: ../bin/duplicity:1015
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete signature chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1005
+=======
+#: ../bin/duplicity:1017
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete backup chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1011
+=======
+#: ../bin/duplicity:1023
+>>>>>>> MERGE-SOURCE
 msgid "Found old backup chain at the following time:"
 msgid_plural "Found old backup chains at the following times:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1015
+=======
+#: ../bin/duplicity:1027
+>>>>>>> MERGE-SOURCE
 msgid "Rerun command with --force option to actually delete."
 msgstr ""
 "Моля изпълнете командата с опция --force, за да бъдат изтрити файловете."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1028
 msgid "No old backup sets found."
 msgstr ""
@@ -262,71 +409,121 @@
 msgstr ""
 
 #: ../bin/duplicity:1092
+=======
+#: ../bin/duplicity:1104
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting local %s (not authoritative at backend)."
-msgstr ""
-"Изтрива се локалния файла %s, който не съществува в отдалечения архив."
+msgstr "Изтрива се локалния файла %s, който не съществува в отдалечения архив."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1097
+=======
+#: ../bin/duplicity:1109
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Unable to delete %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1128 ../duplicity/dup_temp.py:266
+=======
+#: ../bin/duplicity:1140 ../duplicity/dup_temp.py:266
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Failed to read %s: %s"
 msgstr "Грешка при четене на %s: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1142
+=======
+#: ../bin/duplicity:1154
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Copying %s to local cache."
 msgstr "Копира се %s в локалния кеш."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1190
+=======
+#: ../bin/duplicity:1202
+>>>>>>> MERGE-SOURCE
 msgid "Local and Remote metadata are synchronized, no sync needed."
 msgstr ""
 "Локалните и отдалечените мета данни са еднакви, няма нужда от синхронизиране."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1195
+=======
+#: ../bin/duplicity:1207
+>>>>>>> MERGE-SOURCE
 msgid "Synchronizing remote metadata to local cache..."
 msgstr "Синхронизиране на локалния кеш с отдалечения..."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1207
+=======
+#: ../bin/duplicity:1219
+>>>>>>> MERGE-SOURCE
 msgid "Sync would copy the following from remote to local:"
 msgstr ""
 "Синхронизирането ще копира следните файлове от отдалечения архив в локалния "
 "кеш:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1210
+=======
+#: ../bin/duplicity:1222
+>>>>>>> MERGE-SOURCE
 msgid "Sync would remove the following spurious local files:"
 msgstr "Синхронизирането ще премахне следните невалидни локални файлове:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1253
+=======
+#: ../bin/duplicity:1265
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get free space on temp."
 msgstr ""
 "Не е възможно да се изчисли свободното място във временната директория."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1261
+=======
+#: ../bin/duplicity:1273
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp space has %d available, backup needs approx %d."
 msgstr ""
 "Във временната директория има %d свободно място, за операцията е необходимо "
 "приблизително %d. Моля освободете необходимото място."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1264
+=======
+#: ../bin/duplicity:1276
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp has %d available, backup will use approx %d."
 msgstr ""
 "Във временната директория има %d свободно място, за операцията е необходимо "
 "приблизително %d. Моля освободете необходимото място."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1272
+=======
+#: ../bin/duplicity:1284
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get max open files."
 msgstr ""
 "Не е възможно да се определи колко файла могат да бъдат отворени "
 "едновременно."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1276
+=======
+#: ../bin/duplicity:1288
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Max open files of %s is too low, should be >= 1024.\n"
@@ -336,7 +533,11 @@
 "малко желателно е да бъдат поне 1024.\n"
 "Изпълнете командата 'ulimit -n 1024' или повече.\n"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1327
+=======
+#: ../bin/duplicity:1339
+>>>>>>> MERGE-SOURCE
 msgid ""
 "RESTART: The first volume failed to upload before termination.\n"
 "         Restart is impossible...starting backup from beginning."
@@ -346,7 +547,11 @@
 "        Не е възможно да се продължи от предишната позиция. Операцията ще "
 "започне от начало."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1333
+=======
+#: ../bin/duplicity:1345
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Volumes %d to %d failed to upload before termination.\n"
@@ -355,7 +560,11 @@
 "Рестартиране на операцията: Архиви %d от %d не бяха качени успешно.\n"
 "         Рестаритарен след архив %d."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1340
+=======
+#: ../bin/duplicity:1352
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n"
@@ -368,7 +577,11 @@
 "         Рестартирането е невъзможно duplicity ще изтрие частичните данни от "
 "последната операция и ще започне операцията от начало."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1361
+=======
+#: ../bin/duplicity:1373
+>>>>>>> MERGE-SOURCE
 msgid ""
 "\n"
 "PYTHONOPTIMIZE in the environment causes duplicity to fail to\n"
@@ -378,56 +591,102 @@
 "See https://bugs.launchpad.net/duplicity/+bug/931175\n";
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1384
 #, python-format
 msgid "Acquiring lockfile %s"
+=======
+#: ../bin/duplicity:1396
+#, python-format
+msgid "Acquiring lockfile %s"
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1442
+=======
+#: ../bin/duplicity:1454
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Last %s backup left a partial set, restarting."
 msgstr "Предишният опит %s остави частично резервно копие. Рестартиране."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1446
+=======
+#: ../bin/duplicity:1458
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Cleaning up previous partial %s backup set, restarting."
 msgstr "Премахване на предишното частично резервно копие %s и рестартиране."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1458
+=======
+#: ../bin/duplicity:1470
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date:"
 msgstr "Дата на последното пълно резервно копие:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1460
+=======
+#: ../bin/duplicity:1472
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date: none"
 msgstr "Дата на последното пълно резервно копие: Не съществува"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1462
+=======
+#: ../bin/duplicity:1474
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup is too old, forcing full backup"
 msgstr ""
 "Последното пълно резервно копие е прекалено старо. Ще бъде направено пълно "
 "резервно копие."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1506
+=======
+#: ../bin/duplicity:1518
+>>>>>>> MERGE-SOURCE
 msgid ""
 "When using symmetric encryption, the signing passphrase must equal the "
 "encryption passphrase."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1575
+=======
+#: ../bin/duplicity:1587
+>>>>>>> MERGE-SOURCE
 msgid "INT intercepted...exiting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1583
+=======
+#: ../bin/duplicity:1595
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "GPG error detail: %s"
 msgstr "GPG върна грешката. Детайли: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1593
+=======
+#: ../bin/duplicity:1605
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "User error detail: %s"
 msgstr "Детайли за грешка: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1603
+=======
+#: ../bin/duplicity:1615
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Backend error detail: %s"
 msgstr "Детайли за отдалечената грешка: %s"
@@ -521,6 +780,7 @@
 "Use of default filenames is strongly suggested."
 msgstr "Предупреждение! Параметър %s ще бъде премахнат от бъдещите версии."
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:78
 #, python-format
 msgid ""
@@ -541,6 +801,28 @@
 msgstr ""
 
 #. TRANSL: Used in usage help to represent a Unix-style path name. Example:
+=======
+#: ../duplicity/commandline.py:78
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"--include-filelist and --exclude-filelist now accept globbing characters and "
+"should be used instead."
+msgstr ""
+
+#: ../duplicity/commandline.py:88
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"On many GNU/Linux systems, stdin is represented by /dev/stdin and\n"
+"--include-filelist=/dev/stdin or --exclude-filelist=/dev/stdin could\n"
+"be used as a substitute."
+msgstr ""
+
+#. Used in usage help to represent a Unix-style path name. Example:
+>>>>>>> MERGE-SOURCE
 #. --archive-dir <path>
 #: ../duplicity/commandline.py:280 ../duplicity/commandline.py:290
 #: ../duplicity/commandline.py:311 ../duplicity/commandline.py:385
@@ -579,8 +861,13 @@
 msgid "filename"
 msgstr "Име на файла"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent a regular expression (regexp).
 #: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+=======
+#. Used in usage help to represent a regular expression (regexp).
+#: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+>>>>>>> MERGE-SOURCE
 msgid "regular_expression"
 msgstr "Регулярен израз."
 
@@ -610,8 +897,13 @@
 "Предупреждение! Всички грешки ще бъдат игнорирани заради подаден параметър "
 "„%s“. Ако не желаете това прекратете изпълнението на програмата."
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent an imap mailbox
 #: ../duplicity/commandline.py:432
+=======
+#. Used in usage help to represent an imap mailbox
+#: ../duplicity/commandline.py:432
+>>>>>>> MERGE-SOURCE
 msgid "imap_mailbox"
 msgstr ""
 
@@ -630,11 +922,17 @@
 msgid "number"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help (noun)
 #: ../duplicity/commandline.py:464
+=======
+#. Used in usage help (noun)
+#: ../duplicity/commandline.py:464
+>>>>>>> MERGE-SOURCE
 msgid "backup name"
 msgstr "Име на резервното копие"
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:567
 msgid "policy"
 msgstr ""
@@ -642,6 +940,11 @@
 #. TRANSL: noun
 #: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
 #: ../duplicity/commandline.py:768
+=======
+#. noun
+#: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
+#: ../duplicity/commandline.py:768
+>>>>>>> MERGE-SOURCE
 msgid "command"
 msgstr ""
 
@@ -653,23 +956,43 @@
 msgid "pem formatted bundle of certificate authorities"
 msgstr ""
 
-#: ../duplicity/commandline.py:591
-msgid "path to a folder with certificate authority files"
-msgstr ""
-
-#. TRANSL: Used in usage help. Example:
-#. --timeout <seconds>
-#. TRANSL: Used in usage help. Example:
-#. --backend-retry-delay <seconds>
-#. TRANSL: Used in usage help. Example:
-#. --timeout <seconds>
-#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
-#: ../duplicity/commandline.py:831
+<<<<<<< TREE
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr ""
+
+#. TRANSL: Used in usage help. Example:
+#. --timeout <seconds>
+#. TRANSL: Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. TRANSL: Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+=======
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr ""
+
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#. Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+>>>>>>> MERGE-SOURCE
 msgid "seconds"
 msgstr "секунди"
 
+<<<<<<< TREE
 #. TRANSL: abbreviation for "character" (noun)
 #: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+=======
+#. abbreviation for "character" (noun)
+#: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+>>>>>>> MERGE-SOURCE
 msgid "char"
 msgstr ""
 
@@ -718,13 +1041,23 @@
 msgid "container_name"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: noun
 #: ../duplicity/commandline.py:776
+=======
+#. noun
+#: ../duplicity/commandline.py:776
+>>>>>>> MERGE-SOURCE
 msgid "count"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent the name of a file directory
 #: ../duplicity/commandline.py:779
+=======
+#. Used in usage help to represent the name of a file directory
+#: ../duplicity/commandline.py:779
+>>>>>>> MERGE-SOURCE
 msgid "directory"
 msgstr "директория"
 
@@ -810,6 +1143,7 @@
 msgid "user"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: account id for b2. Example: b2://account_id@bucket/
 #: ../duplicity/commandline.py:877
 msgid "account_id"
@@ -823,20 +1157,38 @@
 
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:899
+=======
+#. account id for b2. Example: b2://account_id@bucket/
+#: ../duplicity/commandline.py:877
+msgid "account_id"
+msgstr ""
+
+#. application_key for b2.
+#. Example: b2://account_id:application_key@bucket/
+#: ../duplicity/commandline.py:881
+msgid "application_key"
+msgstr ""
+
+#. Header in usage help
+#: ../duplicity/commandline.py:899
+>>>>>>> MERGE-SOURCE
 msgid "Backends and their URL formats:"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:930
+=======
+#. Header in usage help
+#: ../duplicity/commandline.py:930
+>>>>>>> MERGE-SOURCE
 msgid "Commands:"
 msgstr "Команди:"
 
 #: ../duplicity/commandline.py:954
 #, python-format
-msgid ""
-"Specified archive directory '%s' does not exist, or is not a directory"
-msgstr ""
-"Директорията „%s“ която беше зададена като локален кеш не съществува."
+msgid "Specified archive directory '%s' does not exist, or is not a directory"
+msgstr "Директорията „%s“ която беше зададена като локален кеш не съществува."
 
 #: ../duplicity/commandline.py:963
 #, python-format
@@ -1130,12 +1482,20 @@
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #. TRANSL: "cleanup" is a hard-coded command, so do not translate it
 #: ../duplicity/collections.py:666
 msgid ""
 "These may be deleted by running duplicity with the \"cleanup\" command."
 msgstr ""
 
+=======
+#. "cleanup" is a hard-coded command, so do not translate it
+#: ../duplicity/collections.py:666
+msgid "These may be deleted by running duplicity with the \"cleanup\" command."
+msgstr ""
+
+>>>>>>> MERGE-SOURCE
 #: ../duplicity/collections.py:669
 msgid "No orphaned or incomplete backup sets found."
 msgstr ""
@@ -1154,9 +1514,14 @@
 msgstr[0] "%d файл съществува в локалния кеш"
 msgstr[1] "%d файла съществуват в локалния кеш"
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:748
 msgid ""
 "Warning, discarding last backup set, because of missing signature file."
+=======
+#: ../duplicity/collections.py:748
+msgid "Warning, discarding last backup set, because of missing signature file."
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
 #: ../duplicity/collections.py:771
@@ -1297,6 +1662,7 @@
 msgid "Connection failed, please check your password: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:85
 #, python-format
 msgid "MultiBackend: Could not parse query string %s: %s "
@@ -1542,6 +1908,247 @@
 msgid ""
 "basis_file must be a (true) file or an object whose file attribute is the "
 "underlying true file object"
+=======
+#: ../duplicity/backends/multibackend.py:85
+#, python-format
+msgid "MultiBackend: Could not parse query string %s: %s "
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:94
+#, python-format
+msgid "MultiBackend: Invalid query string %s: more than one value for %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:99
+#, python-format
+msgid "MultiBackend: Invalid query string %s: unknown parameter %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:149
+#: ../duplicity/backends/multibackend.py:154
+#, python-format
+msgid "MultiBackend: illegal value for %s: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:162
+#, python-format
+msgid "MultiBackend: Url %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:166
+#, python-format
+msgid "MultiBackend: Could not load config file %s: %s "
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:175
+#, python-format
+msgid "MultiBackend: use store %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:180
+#, python-format
+msgid "MultiBackend: set env %s = %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:206
+#, python-format
+msgid "MultiBackend: _put: write to store #%s (%s)"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:219
+#, python-format
+msgid "MultiBackend: failed to write to store #%s (%s), try #%s, Exception: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:226
+#, python-format
+msgid "MultiBackend: failed to write %s. Aborting process."
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:233
+#, python-format
+msgid ""
+"MultiBackend: failed to write %s. Tried all backing stores and none succeeded"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:250
+#, python-format
+msgid "MultiBackend: failed to get %s to %s from %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:253
+#, python-format
+msgid ""
+"MultiBackend: failed to get %s. Tried all backing stores and none succeeded"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:262
+#, python-format
+msgid "MultiBackend: list from %s: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:268
+#, python-format
+msgid "MultiBackend: combined list: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:290
+#, python-format
+msgid "MultiBackend: failed to delete %s from %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:294
+#, python-format
+msgid ""
+"MultiBackend: failed to delete %s. Tried all backing stores and none "
+"succeeded"
+msgstr ""
+
+#: ../duplicity/backends/pydrivebackend.py:143
+#, python-format
+msgid "PyDrive backend: multiple files called '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:61
+msgid "Missing socket or ssl python modules."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:79
+#, python-format
+msgid "Cacert database file '%s' is not readable."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:100
+msgid ""
+"Option '--ssl-cacert-path' is not supported with python 2.7.8 and below."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:104
+#, python-format
+msgid ""
+"For certificate verification with python 2.7.8 or earlier a cacert database\n"
+"file is needed in one of these locations: %s\n"
+"Hints:\n"
+"  Consult the man page, chapter 'SSL Certificate Verification'.\n"
+"  Consider using the options --ssl-cacert-file, --ssl-no-check-certificate ."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:150
+#, python-format
+msgid "Using WebDAV protocol %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:151
+#, python-format
+msgid "Using WebDAV host %s port %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:153
+#, python-format
+msgid "Using WebDAV directory %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:184
+#, python-format
+msgid "WebDAV create connection on '%s'"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:195
+#, python-format
+msgid "WebDAV Unknown URI scheme: %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:214
+#, python-format
+msgid "WebDAV %s %s request with headers: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:215
+#: ../duplicity/backends/webdavbackend.py:238
+#, python-format
+msgid "WebDAV data length: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:218
+#, python-format
+msgid "WebDAV response status %s with reason '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:224
+#, python-format
+msgid "WebDAV redirect to: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:226
+msgid "WebDAV redirected 10 times. Giving up."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:231
+msgid "WebDAV missing location header in redirect response."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:236
+msgid "WebDAV retry request with authentification headers."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:237
+#, python-format
+msgid "WebDAV %s %s request2 with headers: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:241
+#, python-format
+msgid "WebDAV response2 status %s with reason '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:258
+msgid ""
+"python-kerberos needed to use kerberos                           "
+"authorization, falling back to basic auth."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:262
+#, python-format
+msgid ""
+"Kerberos authorization failed: %s.                          Falling back to "
+"basic auth."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:360
+#, python-format
+msgid "Creating missing directory %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:364
+#, python-format
+msgid "WebDAV MKCOL %s failed: %s %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:377
+#, python-format
+msgid "WebDAV path decoding and translation: %s -> %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:422
+#, python-format
+msgid "WebDAV GET Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:444
+#, python-format
+msgid "WebDAV PUT Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:464
+#, python-format
+msgid "WebDAV DEL Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/librsync.py:184
+msgid ""
+"basis_file must be a (true) file or an object whose file attribute is the "
+"underlying true file object"
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
 #: ../duplicity/manifest.py:91
@@ -1568,6 +2175,7 @@
 "seeing this message"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:192
 #, python-format
 msgid "Found manifest volume %s"
@@ -1585,6 +2193,19 @@
 msgstr ""
 
 #: ../duplicity/manifest.py:213
+=======
+#: ../duplicity/manifest.py:192
+#, python-format
+msgid "Found manifest volume %s"
+msgstr ""
+
+#: ../duplicity/manifest.py:199
+#, python-format
+msgid "Found %s volumes in manifest"
+msgstr ""
+
+#: ../duplicity/manifest.py:213
+>>>>>>> MERGE-SOURCE
 msgid "Manifests not equal because different volume numbers"
 msgstr ""
 
@@ -1775,3 +2396,26 @@
 #, python-format
 msgid "Releasing lockfile %s"
 msgstr ""
+<<<<<<< TREE
+=======
+
+#~ msgid "%s not found in archive, no files restored."
+#~ msgstr "Файла %s не беше намерен в архива."
+
+#~ msgid "Found old backup set at the following time:"
+#~ msgid_plural "Found old backup sets at the following times:"
+#~ msgstr[0] "Намерено е старо архивно копие от следната дата:"
+#~ msgstr[1] "Намерени са стари архивни копия от следните дати:"
+
+#~ msgid "Deleting backup set at time:"
+#~ msgid_plural "Deleting backup sets at times:"
+#~ msgstr[0] "Изтриване на архивно копие от дата:"
+#~ msgstr[1] "Изтриване на архивни копия от дати:"
+
+#~ msgid ""
+#~ "Error is:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Грешка:\n"
+#~ "%s"
+>>>>>>> MERGE-SOURCE

=== modified file 'po/bs.po'
--- po/bs.po	2018-02-25 05:44:50 +0000
+++ po/bs.po	2019-05-20 08:57:58 +0000
@@ -6,18 +6,32 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: duplicity\n"
+<<<<<<< TREE
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2018-02-24 06:05+0000\n"
 "PO-Revision-Date: 2018-02-23 13:10+0000\n"
+=======
+"Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
+"POT-Creation-Date: 2018-08-21 10:58-0500\n"
+"PO-Revision-Date: 2011-12-29 12:30+0000\n"
+>>>>>>> MERGE-SOURCE
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: Bosnian <bs@xxxxxx>\n"
+"Language: bs\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+<<<<<<< TREE
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 "X-Launchpad-Export-Date: 2018-02-25 05:44+0000\n"
 "X-Generator: Launchpad (build 18561)\n"
+=======
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2018-08-12 04:35+0000\n"
+"X-Generator: Launchpad (build 18747)\n"
+>>>>>>> MERGE-SOURCE
 
 #: ../bin/duplicity:133
 msgid "Reuse configured PASSPHRASE as SIGN_PASSPHRASE"
@@ -70,139 +84,249 @@
 "Continuing restart on file %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:331
+=======
+#: ../bin/duplicity:336
+#, python-format
+msgid "Remote filesize %d for %s does not match local size %d, retrying."
+msgstr ""
+
+#: ../bin/duplicity:343
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s was corrupted during upload."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:364
+=======
+#: ../bin/duplicity:376
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Restarting backup, but current encryption settings do not match original "
 "settings"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:387
+=======
+#: ../bin/duplicity:399
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Restarting after volume %s, file %s, block %s"
 msgstr "Ponovno pokretanje poslje volumena %s, dadoteke %s, blokirati %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:457
+=======
+#: ../bin/duplicity:469
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d"
 msgstr "Obrađen volumen %d"
 
+<<<<<<< TREE
 #: ../bin/duplicity:606
+=======
+#: ../bin/duplicity:618
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Fatal Error: Unable to start incremental backup.  Old signatures not found "
 "and incremental specified"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:610
+=======
+#: ../bin/duplicity:622
+>>>>>>> MERGE-SOURCE
 msgid "No signatures found, switching to full backup."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:624
+=======
+#: ../bin/duplicity:636
+>>>>>>> MERGE-SOURCE
 msgid "Backup Statistics"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:730
+=======
+#: ../bin/duplicity:742
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%s not found in archive - no files restored."
 msgstr "%s. nije pronađen u arhivu - nijedan fajl nije povraćen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:734
+=======
+#: ../bin/duplicity:746
+>>>>>>> MERGE-SOURCE
 msgid "No files found in archive - nothing restored."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:767
+=======
+#: ../bin/duplicity:779
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d of %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:801
+=======
+#: ../bin/duplicity:813
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Invalid data - %s hash mismatch for file:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:804
+=======
+#: ../bin/duplicity:816
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Calculated hash: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:805
+=======
+#: ../bin/duplicity:817
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Manifest hash: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:848
+=======
+#: ../bin/duplicity:860
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Volume was signed by key %s, not %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:880
+=======
+#: ../bin/duplicity:892
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Verify complete: %s, %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:881
+=======
+#: ../bin/duplicity:893
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d file compared"
 msgid_plural "%d files compared"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:883
+=======
+#: ../bin/duplicity:895
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d difference found"
 msgid_plural "%d differences found"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:902
+=======
+#: ../bin/duplicity:914
+>>>>>>> MERGE-SOURCE
 msgid "No extraneous files found, nothing deleted in cleanup."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:907
+=======
+#: ../bin/duplicity:919
+>>>>>>> MERGE-SOURCE
 msgid "Deleting this file from backend:"
 msgid_plural "Deleting these files from backend:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:918
+=======
+#: ../bin/duplicity:930
+>>>>>>> MERGE-SOURCE
 msgid "Found the following file to delete:"
 msgid_plural "Found the following files to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:921
+=======
+#: ../bin/duplicity:933
+>>>>>>> MERGE-SOURCE
 msgid "Run duplicity again with the --force option to actually delete."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:964
+=======
+#: ../bin/duplicity:976
+>>>>>>> MERGE-SOURCE
 msgid "There are backup set(s) at time(s):"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:966
+=======
+#: ../bin/duplicity:978
+>>>>>>> MERGE-SOURCE
 msgid "Which can't be deleted because newer sets depend on them."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:970
+=======
+#: ../bin/duplicity:982
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Current active backup chain is older than specified time.  However, it will "
 "not be deleted.  To remove all your backups, manually purge the repository."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:983
+=======
+#: ../bin/duplicity:995
+>>>>>>> MERGE-SOURCE
 msgid "No old backup sets found, nothing deleted."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:986
+=======
+#: ../bin/duplicity:998
+>>>>>>> MERGE-SOURCE
 msgid "Deleting backup chain at time:"
 msgid_plural "Deleting backup chains at times:"
 msgstr[0] "Brišem lanac rezervnih kopija u vrijeme:"
 msgstr[1] "Brišem lance rezervnih kopija u vremenima:"
 msgstr[2] "Brišem lance rezervnih kopija u vremenima:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:998
 #, python-format
 msgid "Deleting any incremental signature chain rooted at %s"
@@ -214,26 +338,54 @@
 msgstr ""
 
 #: ../bin/duplicity:1003
+=======
+#: ../bin/duplicity:1010
+#, python-format
+msgid "Deleting any incremental signature chain rooted at %s"
+msgstr "Brisanje svakog inkrementalnog lanca potpisa ukorijenjenog na %s"
+
+#: ../bin/duplicity:1012
+#, python-format
+msgid "Deleting any incremental backup chain rooted at %s"
+msgstr ""
+"Brisanje svakog inkrementalnog lanca sigurnosnog kopiranja ukorijenjenog na "
+"%s"
+
+#: ../bin/duplicity:1015
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete signature chain %s"
 msgstr "Brišem kompletni lanac potpisa %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1005
+=======
+#: ../bin/duplicity:1017
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete backup chain %s"
 msgstr "Brišem kompletni lanac rezervnih kopija %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1011
+=======
+#: ../bin/duplicity:1023
+>>>>>>> MERGE-SOURCE
 msgid "Found old backup chain at the following time:"
 msgid_plural "Found old backup chains at the following times:"
 msgstr[0] "Nađen stari lanac rezervnih kopija u vrijeme:"
 msgstr[1] "Nađeni stari lanci rezervnih kopija u vremenima:"
 msgstr[2] "Nađeni stari lanci rezervnih kopija u vremenima:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1015
+=======
+#: ../bin/duplicity:1027
+>>>>>>> MERGE-SOURCE
 msgid "Rerun command with --force option to actually delete."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1028
 msgid "No old backup sets found."
 msgstr ""
@@ -254,80 +406,143 @@
 msgstr ""
 
 #: ../bin/duplicity:1092
+=======
+#: ../bin/duplicity:1104
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting local %s (not authoritative at backend)."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1097
+=======
+#: ../bin/duplicity:1109
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Unable to delete %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1128 ../duplicity/dup_temp.py:266
+=======
+#: ../bin/duplicity:1140 ../duplicity/dup_temp.py:266
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Failed to read %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1142
+=======
+#: ../bin/duplicity:1154
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Copying %s to local cache."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1190
+=======
+#: ../bin/duplicity:1202
+>>>>>>> MERGE-SOURCE
 msgid "Local and Remote metadata are synchronized, no sync needed."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1195
+=======
+#: ../bin/duplicity:1207
+>>>>>>> MERGE-SOURCE
 msgid "Synchronizing remote metadata to local cache..."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1207
+=======
+#: ../bin/duplicity:1219
+>>>>>>> MERGE-SOURCE
 msgid "Sync would copy the following from remote to local:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1210
+=======
+#: ../bin/duplicity:1222
+>>>>>>> MERGE-SOURCE
 msgid "Sync would remove the following spurious local files:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1253
+=======
+#: ../bin/duplicity:1265
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get free space on temp."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1261
+=======
+#: ../bin/duplicity:1273
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp space has %d available, backup needs approx %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1264
+=======
+#: ../bin/duplicity:1276
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp has %d available, backup will use approx %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1272
+=======
+#: ../bin/duplicity:1284
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get max open files."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1276
+=======
+#: ../bin/duplicity:1288
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Max open files of %s is too low, should be >= 1024.\n"
 "Use 'ulimit -n 1024' or higher to correct.\n"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1327
+=======
+#: ../bin/duplicity:1339
+>>>>>>> MERGE-SOURCE
 msgid ""
 "RESTART: The first volume failed to upload before termination.\n"
 "         Restart is impossible...starting backup from beginning."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1333
+=======
+#: ../bin/duplicity:1345
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Volumes %d to %d failed to upload before termination.\n"
 "         Restarting backup at volume %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1340
+=======
+#: ../bin/duplicity:1352
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n"
@@ -336,7 +551,11 @@
 "         backup then restart the backup from the beginning."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1361
+=======
+#: ../bin/duplicity:1373
+>>>>>>> MERGE-SOURCE
 msgid ""
 "\n"
 "PYTHONOPTIMIZE in the environment causes duplicity to fail to\n"
@@ -351,34 +570,65 @@
 "okoline i vratite kopije.\n"
 "Pogledajte https://bugs.launchpad.net/duplicity/+bug/931175\n";
 
+<<<<<<< TREE
 #: ../bin/duplicity:1384
 #, python-format
 msgid "Acquiring lockfile %s"
 msgstr ""
+=======
+#: ../bin/duplicity:1396
+#, python-format
+msgid "Acquiring lockfile %s"
+msgstr "Stjecanje lockfilea %s"
+>>>>>>> MERGE-SOURCE
 
+<<<<<<< TREE
 #: ../bin/duplicity:1442
+=======
+#: ../bin/duplicity:1454
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Last %s backup left a partial set, restarting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1446
+=======
+#: ../bin/duplicity:1458
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Cleaning up previous partial %s backup set, restarting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1458
+=======
+#: ../bin/duplicity:1470
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1460
+=======
+#: ../bin/duplicity:1472
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date: none"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1462
+=======
+#: ../bin/duplicity:1474
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup is too old, forcing full backup"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1506
+=======
+#: ../bin/duplicity:1518
+>>>>>>> MERGE-SOURCE
 msgid ""
 "When using symmetric encryption, the signing passphrase must equal the "
 "encryption passphrase."
@@ -386,21 +636,37 @@
 "Kada koristite simetrično šifriranje, potpisivanje zaporuke mora biti "
 "jednaka enkripciji zaporuke."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1575
+=======
+#: ../bin/duplicity:1587
+>>>>>>> MERGE-SOURCE
 msgid "INT intercepted...exiting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1583
+=======
+#: ../bin/duplicity:1595
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "GPG error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1593
+=======
+#: ../bin/duplicity:1605
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "User error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1603
+=======
+#: ../bin/duplicity:1615
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Backend error detail: %s"
 msgstr ""
@@ -494,6 +760,7 @@
 "Use of default filenames is strongly suggested."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:78
 #, python-format
 msgid ""
@@ -524,6 +791,38 @@
 "koristiti kao zamjena."
 
 #. TRANSL: Used in usage help to represent a Unix-style path name. Example:
+=======
+#: ../duplicity/commandline.py:78
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"--include-filelist and --exclude-filelist now accept globbing characters and "
+"should be used instead."
+msgstr ""
+"Upozorenje: Opcija %s je proglašena zastarjelom i biti će uklonjena iz "
+"budućih distribucija.\n"
+"--include-filelist i --exclude-filelist sada primaju globbing karaktere i "
+"trebali bi se koristiti."
+
+#: ../duplicity/commandline.py:88
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"On many GNU/Linux systems, stdin is represented by /dev/stdin and\n"
+"--include-filelist=/dev/stdin or --exclude-filelist=/dev/stdin could\n"
+"be used as a substitute."
+msgstr ""
+"Upozorenje: Opcija %s  je proglašena zastarjelom biti će uklonjena iz "
+"budućih distribucija.\n"
+"Na mnogim GNU/Linux sistemima, stdin je reprezentovano sa /dev/stdin i \n"
+"--include-filelist=/dev/stdin ili --exclude-filelist=/dev/stdin bi se "
+"moglo \n"
+"koristiti kao zamjena."
+
+#. Used in usage help to represent a Unix-style path name. Example:
+>>>>>>> MERGE-SOURCE
 #. --archive-dir <path>
 #: ../duplicity/commandline.py:280 ../duplicity/commandline.py:290
 #: ../duplicity/commandline.py:311 ../duplicity/commandline.py:385
@@ -562,8 +861,13 @@
 msgid "filename"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent a regular expression (regexp).
 #: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+=======
+#. Used in usage help to represent a regular expression (regexp).
+#: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+>>>>>>> MERGE-SOURCE
 msgid "regular_expression"
 msgstr ""
 
@@ -591,8 +895,13 @@
 "not intended"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent an imap mailbox
 #: ../duplicity/commandline.py:432
+=======
+#. Used in usage help to represent an imap mailbox
+#: ../duplicity/commandline.py:432
+>>>>>>> MERGE-SOURCE
 msgid "imap_mailbox"
 msgstr ""
 
@@ -611,11 +920,17 @@
 msgid "number"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help (noun)
 #: ../duplicity/commandline.py:464
+=======
+#. Used in usage help (noun)
+#: ../duplicity/commandline.py:464
+>>>>>>> MERGE-SOURCE
 msgid "backup name"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:567
 msgid "policy"
 msgstr ""
@@ -623,6 +938,11 @@
 #. TRANSL: noun
 #: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
 #: ../duplicity/commandline.py:768
+=======
+#. noun
+#: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
+#: ../duplicity/commandline.py:768
+>>>>>>> MERGE-SOURCE
 msgid "command"
 msgstr ""
 
@@ -634,6 +954,7 @@
 msgid "pem formatted bundle of certificate authorities"
 msgstr "pem formatiran snop od certificiranja"
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:591
 msgid "path to a folder with certificate authority files"
 msgstr ""
@@ -646,11 +967,30 @@
 #. --timeout <seconds>
 #: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
 #: ../duplicity/commandline.py:831
+=======
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr "putanja do foldera sa datotekama autoriteta certifikata"
+
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#. Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+>>>>>>> MERGE-SOURCE
 msgid "seconds"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: abbreviation for "character" (noun)
 #: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+=======
+#. abbreviation for "character" (noun)
+#: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+>>>>>>> MERGE-SOURCE
 msgid "char"
 msgstr ""
 
@@ -699,13 +1039,23 @@
 msgid "container_name"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: noun
 #: ../duplicity/commandline.py:776
+=======
+#. noun
+#: ../duplicity/commandline.py:776
+>>>>>>> MERGE-SOURCE
 msgid "count"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent the name of a file directory
 #: ../duplicity/commandline.py:779
+=======
+#. Used in usage help to represent the name of a file directory
+#: ../duplicity/commandline.py:779
+>>>>>>> MERGE-SOURCE
 msgid "directory"
 msgstr ""
 
@@ -791,6 +1141,7 @@
 msgid "user"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: account id for b2. Example: b2://account_id@bucket/
 #: ../duplicity/commandline.py:877
 msgid "account_id"
@@ -804,18 +1155,37 @@
 
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:899
+=======
+#. account id for b2. Example: b2://account_id@bucket/
+#: ../duplicity/commandline.py:877
+msgid "account_id"
+msgstr "account_id"
+
+#. application_key for b2.
+#. Example: b2://account_id:application_key@bucket/
+#: ../duplicity/commandline.py:881
+msgid "application_key"
+msgstr "application_key"
+
+#. Header in usage help
+#: ../duplicity/commandline.py:899
+>>>>>>> MERGE-SOURCE
 msgid "Backends and their URL formats:"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:930
+=======
+#. Header in usage help
+#: ../duplicity/commandline.py:930
+>>>>>>> MERGE-SOURCE
 msgid "Commands:"
 msgstr ""
 
 #: ../duplicity/commandline.py:954
 #, python-format
-msgid ""
-"Specified archive directory '%s' does not exist, or is not a directory"
+msgid "Specified archive directory '%s' does not exist, or is not a directory"
 msgstr ""
 
 #: ../duplicity/commandline.py:963
@@ -856,12 +1226,21 @@
 "currently work only when backing up,not restoring."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1101
 #, python-format
 msgid "GPG binary is %s, version %s"
 msgstr ""
 
 #: ../duplicity/commandline.py:1129
+=======
+#: ../duplicity/commandline.py:1101
+#, python-format
+msgid "GPG binary is %s, version %s"
+msgstr "GPG binarni je %s, verzija %s"
+
+#: ../duplicity/commandline.py:1129
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Bad URL '%s'.\n"
@@ -983,22 +1362,41 @@
 msgid "Fatal Error: Neither remote nor local manifest is readable."
 msgstr ""
 
-#: ../duplicity/collections.py:225
-#, python-format
-msgid "Processing local manifest %s (%s)"
-msgstr ""
-
-#: ../duplicity/collections.py:237
-#, python-format
-msgid "Error processing remote manifest (%s): %s"
-msgstr ""
-
-#: ../duplicity/collections.py:240
-#, python-format
-msgid "Processing remote manifest %s (%s)"
-msgstr ""
-
-#: ../duplicity/collections.py:323
+<<<<<<< TREE
+#: ../duplicity/collections.py:225
+#, python-format
+msgid "Processing local manifest %s (%s)"
+msgstr ""
+
+#: ../duplicity/collections.py:237
+#, python-format
+msgid "Error processing remote manifest (%s): %s"
+msgstr ""
+
+#: ../duplicity/collections.py:240
+#, python-format
+msgid "Processing remote manifest %s (%s)"
+msgstr ""
+
+#: ../duplicity/collections.py:323
+=======
+#: ../duplicity/collections.py:225
+#, python-format
+msgid "Processing local manifest %s (%s)"
+msgstr "Obrada lokalnog manifesta %s (%s)"
+
+#: ../duplicity/collections.py:237
+#, python-format
+msgid "Error processing remote manifest (%s): %s"
+msgstr "Pogreška u obradi spoljnjeg manifesta (%s): %s"
+
+#: ../duplicity/collections.py:240
+#, python-format
+msgid "Processing remote manifest %s (%s)"
+msgstr "Obrada spoljnjeg manifesta %s (%s)"
+
+#: ../duplicity/collections.py:323
+>>>>>>> MERGE-SOURCE
 msgid "Preferring Backupset over previous one!"
 msgstr ""
 
@@ -1106,12 +1504,20 @@
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #. TRANSL: "cleanup" is a hard-coded command, so do not translate it
 #: ../duplicity/collections.py:666
 msgid ""
 "These may be deleted by running duplicity with the \"cleanup\" command."
 msgstr ""
 
+=======
+#. "cleanup" is a hard-coded command, so do not translate it
+#: ../duplicity/collections.py:666
+msgid "These may be deleted by running duplicity with the \"cleanup\" command."
+msgstr ""
+
+>>>>>>> MERGE-SOURCE
 #: ../duplicity/collections.py:669
 msgid "No orphaned or incomplete backup sets found."
 msgstr ""
@@ -1130,9 +1536,14 @@
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:748
 msgid ""
 "Warning, discarding last backup set, because of missing signature file."
+=======
+#: ../duplicity/collections.py:748
+msgid "Warning, discarding last backup set, because of missing signature file."
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
 #: ../duplicity/collections.py:771
@@ -1203,6 +1614,8 @@
 "No signature chain for the requested time. Using oldest available chain, "
 "starting at time %s."
 msgstr ""
+"Nema lanac potpisa za traženo vrijeme. Upotreba najstarijeg raspoloživog "
+"lanca, počevši od vremena %s."
 
 #: ../duplicity/collections.py:1235
 #, python-format
@@ -1273,6 +1686,7 @@
 msgid "Connection failed, please check your password: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:85
 #, python-format
 msgid "MultiBackend: Could not parse query string %s: %s "
@@ -1527,6 +1941,269 @@
 "basis_file must be a (true) file or an object whose file attribute is the "
 "underlying true file object"
 msgstr ""
+=======
+#: ../duplicity/backends/multibackend.py:85
+#, python-format
+msgid "MultiBackend: Could not parse query string %s: %s "
+msgstr "MultiBackend: Ne mogu razmatrati string upita %s: %s "
+
+#: ../duplicity/backends/multibackend.py:94
+#, python-format
+msgid "MultiBackend: Invalid query string %s: more than one value for %s"
+msgstr ""
+"MultiBackend: Nevaljan string upita %s: više od jedne vrijednosti za %s"
+
+#: ../duplicity/backends/multibackend.py:99
+#, python-format
+msgid "MultiBackend: Invalid query string %s: unknown parameter %s"
+msgstr "MultiBackend: Nevaljan string upita %s: nepoznat parametar %s"
+
+#: ../duplicity/backends/multibackend.py:149
+#: ../duplicity/backends/multibackend.py:154
+#, python-format
+msgid "MultiBackend: illegal value for %s: %s"
+msgstr "MultiBackend: neodobrena vrijednost za %s: %s"
+
+#: ../duplicity/backends/multibackend.py:162
+#, python-format
+msgid "MultiBackend: Url %s"
+msgstr "MultiBackend: Url %s"
+
+#: ../duplicity/backends/multibackend.py:166
+#, python-format
+msgid "MultiBackend: Could not load config file %s: %s "
+msgstr "MultiBackend: Nije mogao učitati  config fajl %s: %s "
+
+#: ../duplicity/backends/multibackend.py:175
+#, python-format
+msgid "MultiBackend: use store %s"
+msgstr "MultiBackend: koristi u spremniku %s"
+
+#: ../duplicity/backends/multibackend.py:180
+#, python-format
+msgid "MultiBackend: set env %s = %s"
+msgstr "MultiBackend: postavi env %s = %s"
+
+#: ../duplicity/backends/multibackend.py:206
+#, python-format
+msgid "MultiBackend: _put: write to store #%s (%s)"
+msgstr "MultiBackend: _put:write to store #%s (%s)"
+
+#: ../duplicity/backends/multibackend.py:219
+#, python-format
+msgid "MultiBackend: failed to write to store #%s (%s), try #%s, Exception: %s"
+msgstr ""
+"MultiBackend: nije uspio napisati za spremanje $%s (%s), probaj #%s, "
+"Izuzetak: %s"
+
+#: ../duplicity/backends/multibackend.py:226
+#, python-format
+msgid "MultiBackend: failed to write %s. Aborting process."
+msgstr "MultiBackend: nije uspjelo unošenje %s. Prekidanje procesa."
+
+#: ../duplicity/backends/multibackend.py:233
+#, python-format
+msgid ""
+"MultiBackend: failed to write %s. Tried all backing stores and none succeeded"
+msgstr ""
+"MultiBackend: nije uspjelo pisanje %s. Pokušali se rezervni spremnici i "
+"nijedan nije uspio"
+
+#: ../duplicity/backends/multibackend.py:250
+#, python-format
+msgid "MultiBackend: failed to get %s to %s from %s"
+msgstr "MultiBackend: nije uspjelo uzimanje %s do %s od %s"
+
+#: ../duplicity/backends/multibackend.py:253
+#, python-format
+msgid ""
+"MultiBackend: failed to get %s. Tried all backing stores and none succeeded"
+msgstr ""
+"MultiBackend: nije uspjelo uzimanje %s. Pokušali se rezervni spremnici i "
+"nijedan nije uspio"
+
+#: ../duplicity/backends/multibackend.py:262
+#, python-format
+msgid "MultiBackend: list from %s: %s"
+msgstr "MultiBackend: lista od %s: %s"
+
+#: ../duplicity/backends/multibackend.py:268
+#, python-format
+msgid "MultiBackend: combined list: %s"
+msgstr "MultiBackend: kombinirana lista: %s"
+
+#: ../duplicity/backends/multibackend.py:290
+#, python-format
+msgid "MultiBackend: failed to delete %s from %s"
+msgstr "MultiBackend: nije uspjelo brisanje %s od %s"
+
+#: ../duplicity/backends/multibackend.py:294
+#, python-format
+msgid ""
+"MultiBackend: failed to delete %s. Tried all backing stores and none "
+"succeeded"
+msgstr ""
+"MultiBackend: nije uspjelo brisanje %s.  Pokušali se rezervni spremnici i "
+"nijedan nije uspio"
+
+#: ../duplicity/backends/pydrivebackend.py:143
+#, python-format
+msgid "PyDrive backend: multiple files called '%s'."
+msgstr "PyDrive backend: više fajlova se zovu '%s'."
+
+#: ../duplicity/backends/webdavbackend.py:61
+msgid "Missing socket or ssl python modules."
+msgstr "Fali soket ili ssl python moduli."
+
+#: ../duplicity/backends/webdavbackend.py:79
+#, python-format
+msgid "Cacert database file '%s' is not readable."
+msgstr "Datoteka baze podataka cacert '%s' nije čitljiva."
+
+#: ../duplicity/backends/webdavbackend.py:100
+msgid ""
+"Option '--ssl-cacert-path' is not supported with python 2.7.8 and below."
+msgstr "Opcija '--ssl-cacert-path' nije podržana sa python 2.7.8 i niže."
+
+#: ../duplicity/backends/webdavbackend.py:104
+#, python-format
+msgid ""
+"For certificate verification with python 2.7.8 or earlier a cacert database\n"
+"file is needed in one of these locations: %s\n"
+"Hints:\n"
+"  Consult the man page, chapter 'SSL Certificate Verification'.\n"
+"  Consider using the options --ssl-cacert-file, --ssl-no-check-certificate ."
+msgstr ""
+"Za potvrdu certifikata sa python 2.7.8 ili ranije cacert baza podataka\n"
+"datateka je potrebna na jednoj od ovih lokacija: %s\n"
+"Upute:\n"
+"  Provjerite na glavnoj stranici, poglavlje 'SSL Certificate Verification'.\n"
+"  Razmatrajte korištenje opcija --ssl-cacert-file, --ssl-no-check-"
+"certificate ."
+
+#: ../duplicity/backends/webdavbackend.py:150
+#, python-format
+msgid "Using WebDAV protocol %s"
+msgstr "Korištenje WebDAV protokola %s"
+
+#: ../duplicity/backends/webdavbackend.py:151
+#, python-format
+msgid "Using WebDAV host %s port %s"
+msgstr "Korištenje WebDAV host %s port %s"
+
+#: ../duplicity/backends/webdavbackend.py:153
+#, python-format
+msgid "Using WebDAV directory %s"
+msgstr "Korištenje WebDAV direktorije %s"
+
+#: ../duplicity/backends/webdavbackend.py:184
+#, python-format
+msgid "WebDAV create connection on '%s'"
+msgstr "WebDAV napravi konekciju na '%s'"
+
+#: ../duplicity/backends/webdavbackend.py:195
+#, python-format
+msgid "WebDAV Unknown URI scheme: %s"
+msgstr "WebDAV Nepoznata URI šema: %s"
+
+#: ../duplicity/backends/webdavbackend.py:214
+#, python-format
+msgid "WebDAV %s %s request with headers: %s "
+msgstr "WebDAV %s %s zahtjev sa zaglavljima: %s "
+
+#: ../duplicity/backends/webdavbackend.py:215
+#: ../duplicity/backends/webdavbackend.py:238
+#, python-format
+msgid "WebDAV data length: %s "
+msgstr "WebDAV podatkovna dužina: %s "
+
+#: ../duplicity/backends/webdavbackend.py:218
+#, python-format
+msgid "WebDAV response status %s with reason '%s'."
+msgstr "WebDAV status odgovora %s sa razlogom '%s'."
+
+#: ../duplicity/backends/webdavbackend.py:224
+#, python-format
+msgid "WebDAV redirect to: %s "
+msgstr "WebDAV preusmjeri prema: %s "
+
+#: ../duplicity/backends/webdavbackend.py:226
+msgid "WebDAV redirected 10 times. Giving up."
+msgstr "WebDAV preusmjereno 10 puta. Odustajanje."
+
+#: ../duplicity/backends/webdavbackend.py:231
+msgid "WebDAV missing location header in redirect response."
+msgstr "WebDAV potrebno zaglavlje lokacije u odgovoru na preusmjerenje."
+
+#: ../duplicity/backends/webdavbackend.py:236
+msgid "WebDAV retry request with authentification headers."
+msgstr ""
+"WebDAV zahtjev za ponovnim pokušajem sa zaglavljima za autentifikaciju."
+
+#: ../duplicity/backends/webdavbackend.py:237
+#, python-format
+msgid "WebDAV %s %s request2 with headers: %s "
+msgstr "WebDAV %s %s zahtjev2 sa zaglavljima: %s "
+
+#: ../duplicity/backends/webdavbackend.py:241
+#, python-format
+msgid "WebDAV response2 status %s with reason '%s'."
+msgstr "WebDAV odgovor2 status %s sa razlogom '%s'."
+
+#: ../duplicity/backends/webdavbackend.py:258
+msgid ""
+"python-kerberos needed to use kerberos                           "
+"authorization, falling back to basic auth."
+msgstr ""
+"python-kerberos potreban za korištenje kerberos autorizacije, oslanjanje na "
+"osnovnu autorizaciju."
+
+#: ../duplicity/backends/webdavbackend.py:262
+#, python-format
+msgid ""
+"Kerberos authorization failed: %s.                          Falling back to "
+"basic auth."
+msgstr ""
+"Kerberos autorizacija neuspjela: %s. Oslanjanje na osnovnu autorizaciju."
+
+#: ../duplicity/backends/webdavbackend.py:360
+#, python-format
+msgid "Creating missing directory %s"
+msgstr "Kreiranje potrebne direktorije %s"
+
+#: ../duplicity/backends/webdavbackend.py:364
+#, python-format
+msgid "WebDAV MKCOL %s failed: %s %s"
+msgstr "WebDAV MKCOL %s neuspjeo: %s %s"
+
+#: ../duplicity/backends/webdavbackend.py:377
+#, python-format
+msgid "WebDAV path decoding and translation: %s -> %s"
+msgstr "WebDAV dekodiranje i prevođenje putanje: %s-> %s"
+
+#: ../duplicity/backends/webdavbackend.py:422
+#, python-format
+msgid "WebDAV GET Bad status code %s reason %s."
+msgstr "WebDAV GET Loš statusni kod %s razlog %s."
+
+#: ../duplicity/backends/webdavbackend.py:444
+#, python-format
+msgid "WebDAV PUT Bad status code %s reason %s."
+msgstr "WebDAV PUT Loš statusni kod %s razlog %s."
+
+#: ../duplicity/backends/webdavbackend.py:464
+#, python-format
+msgid "WebDAV DEL Bad status code %s reason %s."
+msgstr "WebDAV DEL Loš statusni kod %s razlog %s."
+
+#: ../duplicity/librsync.py:184
+msgid ""
+"basis_file must be a (true) file or an object whose file attribute is the "
+"underlying true file object"
+msgstr ""
+"basis_file mora biti (true) datoteka ili objekat čiji je atribut datoteke "
+"osnovni objekt iste datoteke."
+>>>>>>> MERGE-SOURCE
 
 #: ../duplicity/manifest.py:91
 #, python-format
@@ -1552,6 +2229,7 @@
 "seeing this message"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:192
 #, python-format
 msgid "Found manifest volume %s"
@@ -1569,6 +2247,19 @@
 msgstr ""
 
 #: ../duplicity/manifest.py:213
+=======
+#: ../duplicity/manifest.py:192
+#, python-format
+msgid "Found manifest volume %s"
+msgstr "Pronađen manifest volumena %s"
+
+#: ../duplicity/manifest.py:199
+#, python-format
+msgid "Found %s volumes in manifest"
+msgstr "Pronađeno %s volumena u manifestu"
+
+#: ../duplicity/manifest.py:213
+>>>>>>> MERGE-SOURCE
 msgid "Manifests not equal because different volume numbers"
 msgstr ""
 
@@ -1759,3 +2450,41 @@
 #, python-format
 msgid "Releasing lockfile %s"
 msgstr "Otpuštanje zakljucane dadoteke %s"
+<<<<<<< TREE
+=======
+
+#~ msgid "Unable to load gio backend: %s"
+#~ msgstr "Ne mogu učitati gio pozadinu: %s"
+
+#~ msgid "Deleting incremental signature chain %s"
+#~ msgstr "Brišem inkrementalni lanac potpisa %s"
+
+#~ msgid "Deleting incremental backup chain %s"
+#~ msgstr "Brišem inkrementalni lanac rezervni kopija %s"
+
+#~ msgid ""
+#~ "Warning: Option %s is supported by ssh pexpect backend only and will be "
+#~ "ignored."
+#~ msgstr ""
+#~ "Upozorenje: Jedina pozadina koja podržava opciju %s je ssh pexpect i bit "
+#~ "će ignorisana."
+
+#~ msgid "paramiko|pexpect"
+#~ msgstr "paramiko|pexpect"
+
+#~ msgid ""
+#~ "Warning: Selected ssh backend '%s' is neither 'paramiko nor 'pexpect'. "
+#~ "Will use default paramiko instead."
+#~ msgstr ""
+#~ "Upozorenje: Izabrana ssh pozadina '%s' nije ni 'paramiko ni 'pexpect'. "
+#~ "Koristit će se podrazumijevana paramiko."
+
+#~ msgid "Total number of backup: %d"
+#~ msgstr "Totalni broj rezervnih kopija: %d"
+
+#~ msgid "Type of file change:"
+#~ msgstr "Tip promjene fajla:"
+
+#~ msgid "File: %s"
+#~ msgstr "Datoteka: %s"
+>>>>>>> MERGE-SOURCE

=== modified file 'po/ca.po'
--- po/ca.po	2018-02-25 05:44:50 +0000
+++ po/ca.po	2019-05-20 08:57:58 +0000
@@ -6,17 +6,29 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: duplicity\n"
+<<<<<<< TREE
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2018-02-24 06:05+0000\n"
 "PO-Revision-Date: 2018-02-23 13:10+0000\n"
+=======
+"Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
+"POT-Creation-Date: 2018-08-21 10:58-0500\n"
+"PO-Revision-Date: 2014-11-05 06:09+0000\n"
+>>>>>>> MERGE-SOURCE
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: Catalan <ca@xxxxxx>\n"
+"Language: ca\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
 "X-Launchpad-Export-Date: 2018-02-25 05:44+0000\n"
 "X-Generator: Launchpad (build 18561)\n"
+=======
+"X-Launchpad-Export-Date: 2018-08-12 04:35+0000\n"
+"X-Generator: Launchpad (build 18747)\n"
+>>>>>>> MERGE-SOURCE
 
 #: ../bin/duplicity:133
 msgid "Reuse configured PASSPHRASE as SIGN_PASSPHRASE"
@@ -69,138 +81,248 @@
 "Continuing restart on file %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:331
+=======
+#: ../bin/duplicity:336
+#, python-format
+msgid "Remote filesize %d for %s does not match local size %d, retrying."
+msgstr ""
+
+#: ../bin/duplicity:343
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s was corrupted during upload."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:364
+=======
+#: ../bin/duplicity:376
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Restarting backup, but current encryption settings do not match original "
 "settings"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:387
+=======
+#: ../bin/duplicity:399
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Restarting after volume %s, file %s, block %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:457
+=======
+#: ../bin/duplicity:469
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:606
+=======
+#: ../bin/duplicity:618
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Fatal Error: Unable to start incremental backup.  Old signatures not found "
 "and incremental specified"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:610
+=======
+#: ../bin/duplicity:622
+>>>>>>> MERGE-SOURCE
 msgid "No signatures found, switching to full backup."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:624
+=======
+#: ../bin/duplicity:636
+>>>>>>> MERGE-SOURCE
 msgid "Backup Statistics"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:730
+=======
+#: ../bin/duplicity:742
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%s not found in archive - no files restored."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:734
+=======
+#: ../bin/duplicity:746
+>>>>>>> MERGE-SOURCE
 msgid "No files found in archive - nothing restored."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:767
+=======
+#: ../bin/duplicity:779
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d of %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:801
+=======
+#: ../bin/duplicity:813
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Invalid data - %s hash mismatch for file:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:804
+=======
+#: ../bin/duplicity:816
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Calculated hash: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:805
+=======
+#: ../bin/duplicity:817
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Manifest hash: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:848
+=======
+#: ../bin/duplicity:860
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Volume was signed by key %s, not %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:880
+=======
+#: ../bin/duplicity:892
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Verify complete: %s, %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:881
+=======
+#: ../bin/duplicity:893
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d file compared"
 msgid_plural "%d files compared"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:883
+=======
+#: ../bin/duplicity:895
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d difference found"
 msgid_plural "%d differences found"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:902
+=======
+#: ../bin/duplicity:914
+>>>>>>> MERGE-SOURCE
 msgid "No extraneous files found, nothing deleted in cleanup."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:907
+=======
+#: ../bin/duplicity:919
+>>>>>>> MERGE-SOURCE
 msgid "Deleting this file from backend:"
 msgid_plural "Deleting these files from backend:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:918
+=======
+#: ../bin/duplicity:930
+>>>>>>> MERGE-SOURCE
 msgid "Found the following file to delete:"
 msgid_plural "Found the following files to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:921
+=======
+#: ../bin/duplicity:933
+>>>>>>> MERGE-SOURCE
 msgid "Run duplicity again with the --force option to actually delete."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:964
+=======
+#: ../bin/duplicity:976
+>>>>>>> MERGE-SOURCE
 msgid "There are backup set(s) at time(s):"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:966
+=======
+#: ../bin/duplicity:978
+>>>>>>> MERGE-SOURCE
 msgid "Which can't be deleted because newer sets depend on them."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:970
+=======
+#: ../bin/duplicity:982
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Current active backup chain is older than specified time.  However, it will "
 "not be deleted.  To remove all your backups, manually purge the repository."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:983
+=======
+#: ../bin/duplicity:995
+>>>>>>> MERGE-SOURCE
 msgid "No old backup sets found, nothing deleted."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:986
+=======
+#: ../bin/duplicity:998
+>>>>>>> MERGE-SOURCE
 msgid "Deleting backup chain at time:"
 msgid_plural "Deleting backup chains at times:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:998
 #, python-format
 msgid "Deleting any incremental signature chain rooted at %s"
@@ -212,25 +334,51 @@
 msgstr ""
 
 #: ../bin/duplicity:1003
+=======
+#: ../bin/duplicity:1010
+#, python-format
+msgid "Deleting any incremental signature chain rooted at %s"
+msgstr ""
+
+#: ../bin/duplicity:1012
+#, python-format
+msgid "Deleting any incremental backup chain rooted at %s"
+msgstr ""
+
+#: ../bin/duplicity:1015
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete signature chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1005
+=======
+#: ../bin/duplicity:1017
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete backup chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1011
+=======
+#: ../bin/duplicity:1023
+>>>>>>> MERGE-SOURCE
 msgid "Found old backup chain at the following time:"
 msgid_plural "Found old backup chains at the following times:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1015
+=======
+#: ../bin/duplicity:1027
+>>>>>>> MERGE-SOURCE
 msgid "Rerun command with --force option to actually delete."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1028
 msgid "No old backup sets found."
 msgstr ""
@@ -251,80 +399,143 @@
 msgstr ""
 
 #: ../bin/duplicity:1092
+=======
+#: ../bin/duplicity:1104
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting local %s (not authoritative at backend)."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1097
+=======
+#: ../bin/duplicity:1109
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Unable to delete %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1128 ../duplicity/dup_temp.py:266
+=======
+#: ../bin/duplicity:1140 ../duplicity/dup_temp.py:266
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Failed to read %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1142
+=======
+#: ../bin/duplicity:1154
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Copying %s to local cache."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1190
+=======
+#: ../bin/duplicity:1202
+>>>>>>> MERGE-SOURCE
 msgid "Local and Remote metadata are synchronized, no sync needed."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1195
+=======
+#: ../bin/duplicity:1207
+>>>>>>> MERGE-SOURCE
 msgid "Synchronizing remote metadata to local cache..."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1207
+=======
+#: ../bin/duplicity:1219
+>>>>>>> MERGE-SOURCE
 msgid "Sync would copy the following from remote to local:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1210
+=======
+#: ../bin/duplicity:1222
+>>>>>>> MERGE-SOURCE
 msgid "Sync would remove the following spurious local files:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1253
+=======
+#: ../bin/duplicity:1265
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get free space on temp."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1261
+=======
+#: ../bin/duplicity:1273
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp space has %d available, backup needs approx %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1264
+=======
+#: ../bin/duplicity:1276
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp has %d available, backup will use approx %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1272
+=======
+#: ../bin/duplicity:1284
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get max open files."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1276
+=======
+#: ../bin/duplicity:1288
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Max open files of %s is too low, should be >= 1024.\n"
 "Use 'ulimit -n 1024' or higher to correct.\n"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1327
+=======
+#: ../bin/duplicity:1339
+>>>>>>> MERGE-SOURCE
 msgid ""
 "RESTART: The first volume failed to upload before termination.\n"
 "         Restart is impossible...starting backup from beginning."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1333
+=======
+#: ../bin/duplicity:1345
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Volumes %d to %d failed to upload before termination.\n"
 "         Restarting backup at volume %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1340
+=======
+#: ../bin/duplicity:1352
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n"
@@ -333,7 +544,11 @@
 "         backup then restart the backup from the beginning."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1361
+=======
+#: ../bin/duplicity:1373
+>>>>>>> MERGE-SOURCE
 msgid ""
 "\n"
 "PYTHONOPTIMIZE in the environment causes duplicity to fail to\n"
@@ -343,54 +558,100 @@
 "See https://bugs.launchpad.net/duplicity/+bug/931175\n";
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1384
 #, python-format
 msgid "Acquiring lockfile %s"
+=======
+#: ../bin/duplicity:1396
+#, python-format
+msgid "Acquiring lockfile %s"
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1442
+=======
+#: ../bin/duplicity:1454
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Last %s backup left a partial set, restarting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1446
+=======
+#: ../bin/duplicity:1458
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Cleaning up previous partial %s backup set, restarting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1458
+=======
+#: ../bin/duplicity:1470
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1460
+=======
+#: ../bin/duplicity:1472
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date: none"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1462
+=======
+#: ../bin/duplicity:1474
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup is too old, forcing full backup"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1506
+=======
+#: ../bin/duplicity:1518
+>>>>>>> MERGE-SOURCE
 msgid ""
 "When using symmetric encryption, the signing passphrase must equal the "
 "encryption passphrase."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1575
+=======
+#: ../bin/duplicity:1587
+>>>>>>> MERGE-SOURCE
 msgid "INT intercepted...exiting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1583
+=======
+#: ../bin/duplicity:1595
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "GPG error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1593
+=======
+#: ../bin/duplicity:1605
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "User error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1603
+=======
+#: ../bin/duplicity:1615
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Backend error detail: %s"
 msgstr ""
@@ -484,6 +745,7 @@
 "Use of default filenames is strongly suggested."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:78
 #, python-format
 msgid ""
@@ -504,6 +766,28 @@
 msgstr ""
 
 #. TRANSL: Used in usage help to represent a Unix-style path name. Example:
+=======
+#: ../duplicity/commandline.py:78
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"--include-filelist and --exclude-filelist now accept globbing characters and "
+"should be used instead."
+msgstr ""
+
+#: ../duplicity/commandline.py:88
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"On many GNU/Linux systems, stdin is represented by /dev/stdin and\n"
+"--include-filelist=/dev/stdin or --exclude-filelist=/dev/stdin could\n"
+"be used as a substitute."
+msgstr ""
+
+#. Used in usage help to represent a Unix-style path name. Example:
+>>>>>>> MERGE-SOURCE
 #. --archive-dir <path>
 #: ../duplicity/commandline.py:280 ../duplicity/commandline.py:290
 #: ../duplicity/commandline.py:311 ../duplicity/commandline.py:385
@@ -542,8 +826,13 @@
 msgid "filename"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent a regular expression (regexp).
 #: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+=======
+#. Used in usage help to represent a regular expression (regexp).
+#: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+>>>>>>> MERGE-SOURCE
 msgid "regular_expression"
 msgstr ""
 
@@ -571,8 +860,13 @@
 "not intended"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent an imap mailbox
 #: ../duplicity/commandline.py:432
+=======
+#. Used in usage help to represent an imap mailbox
+#: ../duplicity/commandline.py:432
+>>>>>>> MERGE-SOURCE
 msgid "imap_mailbox"
 msgstr ""
 
@@ -591,11 +885,17 @@
 msgid "number"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help (noun)
 #: ../duplicity/commandline.py:464
+=======
+#. Used in usage help (noun)
+#: ../duplicity/commandline.py:464
+>>>>>>> MERGE-SOURCE
 msgid "backup name"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:567
 msgid "policy"
 msgstr ""
@@ -603,6 +903,11 @@
 #. TRANSL: noun
 #: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
 #: ../duplicity/commandline.py:768
+=======
+#. noun
+#: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
+#: ../duplicity/commandline.py:768
+>>>>>>> MERGE-SOURCE
 msgid "command"
 msgstr ""
 
@@ -614,23 +919,43 @@
 msgid "pem formatted bundle of certificate authorities"
 msgstr ""
 
-#: ../duplicity/commandline.py:591
-msgid "path to a folder with certificate authority files"
-msgstr ""
-
-#. TRANSL: Used in usage help. Example:
-#. --timeout <seconds>
-#. TRANSL: Used in usage help. Example:
-#. --backend-retry-delay <seconds>
-#. TRANSL: Used in usage help. Example:
-#. --timeout <seconds>
-#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
-#: ../duplicity/commandline.py:831
+<<<<<<< TREE
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr ""
+
+#. TRANSL: Used in usage help. Example:
+#. --timeout <seconds>
+#. TRANSL: Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. TRANSL: Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+=======
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr ""
+
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#. Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+>>>>>>> MERGE-SOURCE
 msgid "seconds"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: abbreviation for "character" (noun)
 #: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+=======
+#. abbreviation for "character" (noun)
+#: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+>>>>>>> MERGE-SOURCE
 msgid "char"
 msgstr ""
 
@@ -679,13 +1004,23 @@
 msgid "container_name"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: noun
 #: ../duplicity/commandline.py:776
+=======
+#. noun
+#: ../duplicity/commandline.py:776
+>>>>>>> MERGE-SOURCE
 msgid "count"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent the name of a file directory
 #: ../duplicity/commandline.py:779
+=======
+#. Used in usage help to represent the name of a file directory
+#: ../duplicity/commandline.py:779
+>>>>>>> MERGE-SOURCE
 msgid "directory"
 msgstr ""
 
@@ -771,6 +1106,7 @@
 msgid "user"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: account id for b2. Example: b2://account_id@bucket/
 #: ../duplicity/commandline.py:877
 msgid "account_id"
@@ -784,18 +1120,37 @@
 
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:899
+=======
+#. account id for b2. Example: b2://account_id@bucket/
+#: ../duplicity/commandline.py:877
+msgid "account_id"
+msgstr ""
+
+#. application_key for b2.
+#. Example: b2://account_id:application_key@bucket/
+#: ../duplicity/commandline.py:881
+msgid "application_key"
+msgstr ""
+
+#. Header in usage help
+#: ../duplicity/commandline.py:899
+>>>>>>> MERGE-SOURCE
 msgid "Backends and their URL formats:"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:930
+=======
+#. Header in usage help
+#: ../duplicity/commandline.py:930
+>>>>>>> MERGE-SOURCE
 msgid "Commands:"
 msgstr ""
 
 #: ../duplicity/commandline.py:954
 #, python-format
-msgid ""
-"Specified archive directory '%s' does not exist, or is not a directory"
+msgid "Specified archive directory '%s' does not exist, or is not a directory"
 msgstr ""
 
 #: ../duplicity/commandline.py:963
@@ -1083,12 +1438,20 @@
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #. TRANSL: "cleanup" is a hard-coded command, so do not translate it
 #: ../duplicity/collections.py:666
 msgid ""
 "These may be deleted by running duplicity with the \"cleanup\" command."
 msgstr ""
 
+=======
+#. "cleanup" is a hard-coded command, so do not translate it
+#: ../duplicity/collections.py:666
+msgid "These may be deleted by running duplicity with the \"cleanup\" command."
+msgstr ""
+
+>>>>>>> MERGE-SOURCE
 #: ../duplicity/collections.py:669
 msgid "No orphaned or incomplete backup sets found."
 msgstr ""
@@ -1107,9 +1470,14 @@
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:748
 msgid ""
 "Warning, discarding last backup set, because of missing signature file."
+=======
+#: ../duplicity/collections.py:748
+msgid "Warning, discarding last backup set, because of missing signature file."
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
 #: ../duplicity/collections.py:771
@@ -1250,6 +1618,7 @@
 msgid "Connection failed, please check your password: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:85
 #, python-format
 msgid "MultiBackend: Could not parse query string %s: %s "
@@ -1495,6 +1864,247 @@
 msgid ""
 "basis_file must be a (true) file or an object whose file attribute is the "
 "underlying true file object"
+=======
+#: ../duplicity/backends/multibackend.py:85
+#, python-format
+msgid "MultiBackend: Could not parse query string %s: %s "
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:94
+#, python-format
+msgid "MultiBackend: Invalid query string %s: more than one value for %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:99
+#, python-format
+msgid "MultiBackend: Invalid query string %s: unknown parameter %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:149
+#: ../duplicity/backends/multibackend.py:154
+#, python-format
+msgid "MultiBackend: illegal value for %s: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:162
+#, python-format
+msgid "MultiBackend: Url %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:166
+#, python-format
+msgid "MultiBackend: Could not load config file %s: %s "
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:175
+#, python-format
+msgid "MultiBackend: use store %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:180
+#, python-format
+msgid "MultiBackend: set env %s = %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:206
+#, python-format
+msgid "MultiBackend: _put: write to store #%s (%s)"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:219
+#, python-format
+msgid "MultiBackend: failed to write to store #%s (%s), try #%s, Exception: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:226
+#, python-format
+msgid "MultiBackend: failed to write %s. Aborting process."
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:233
+#, python-format
+msgid ""
+"MultiBackend: failed to write %s. Tried all backing stores and none succeeded"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:250
+#, python-format
+msgid "MultiBackend: failed to get %s to %s from %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:253
+#, python-format
+msgid ""
+"MultiBackend: failed to get %s. Tried all backing stores and none succeeded"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:262
+#, python-format
+msgid "MultiBackend: list from %s: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:268
+#, python-format
+msgid "MultiBackend: combined list: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:290
+#, python-format
+msgid "MultiBackend: failed to delete %s from %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:294
+#, python-format
+msgid ""
+"MultiBackend: failed to delete %s. Tried all backing stores and none "
+"succeeded"
+msgstr ""
+
+#: ../duplicity/backends/pydrivebackend.py:143
+#, python-format
+msgid "PyDrive backend: multiple files called '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:61
+msgid "Missing socket or ssl python modules."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:79
+#, python-format
+msgid "Cacert database file '%s' is not readable."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:100
+msgid ""
+"Option '--ssl-cacert-path' is not supported with python 2.7.8 and below."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:104
+#, python-format
+msgid ""
+"For certificate verification with python 2.7.8 or earlier a cacert database\n"
+"file is needed in one of these locations: %s\n"
+"Hints:\n"
+"  Consult the man page, chapter 'SSL Certificate Verification'.\n"
+"  Consider using the options --ssl-cacert-file, --ssl-no-check-certificate ."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:150
+#, python-format
+msgid "Using WebDAV protocol %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:151
+#, python-format
+msgid "Using WebDAV host %s port %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:153
+#, python-format
+msgid "Using WebDAV directory %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:184
+#, python-format
+msgid "WebDAV create connection on '%s'"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:195
+#, python-format
+msgid "WebDAV Unknown URI scheme: %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:214
+#, python-format
+msgid "WebDAV %s %s request with headers: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:215
+#: ../duplicity/backends/webdavbackend.py:238
+#, python-format
+msgid "WebDAV data length: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:218
+#, python-format
+msgid "WebDAV response status %s with reason '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:224
+#, python-format
+msgid "WebDAV redirect to: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:226
+msgid "WebDAV redirected 10 times. Giving up."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:231
+msgid "WebDAV missing location header in redirect response."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:236
+msgid "WebDAV retry request with authentification headers."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:237
+#, python-format
+msgid "WebDAV %s %s request2 with headers: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:241
+#, python-format
+msgid "WebDAV response2 status %s with reason '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:258
+msgid ""
+"python-kerberos needed to use kerberos                           "
+"authorization, falling back to basic auth."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:262
+#, python-format
+msgid ""
+"Kerberos authorization failed: %s.                          Falling back to "
+"basic auth."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:360
+#, python-format
+msgid "Creating missing directory %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:364
+#, python-format
+msgid "WebDAV MKCOL %s failed: %s %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:377
+#, python-format
+msgid "WebDAV path decoding and translation: %s -> %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:422
+#, python-format
+msgid "WebDAV GET Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:444
+#, python-format
+msgid "WebDAV PUT Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:464
+#, python-format
+msgid "WebDAV DEL Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/librsync.py:184
+msgid ""
+"basis_file must be a (true) file or an object whose file attribute is the "
+"underlying true file object"
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
 #: ../duplicity/manifest.py:91
@@ -1521,6 +2131,7 @@
 "seeing this message"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:192
 #, python-format
 msgid "Found manifest volume %s"
@@ -1538,6 +2149,19 @@
 msgstr ""
 
 #: ../duplicity/manifest.py:213
+=======
+#: ../duplicity/manifest.py:192
+#, python-format
+msgid "Found manifest volume %s"
+msgstr ""
+
+#: ../duplicity/manifest.py:199
+#, python-format
+msgid "Found %s volumes in manifest"
+msgstr ""
+
+#: ../duplicity/manifest.py:213
+>>>>>>> MERGE-SOURCE
 msgid "Manifests not equal because different volume numbers"
 msgstr ""
 

=== modified file 'po/ca@xxxxxxxxxxx'
--- po/ca@xxxxxxxxxxx	2018-02-25 05:44:50 +0000
+++ po/ca@xxxxxxxxxxx	2019-05-20 08:57:58 +0000
@@ -6,17 +6,29 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: duplicity\n"
+<<<<<<< TREE
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2018-02-24 06:05+0000\n"
 "PO-Revision-Date: 2018-02-23 13:10+0000\n"
+=======
+"Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
+"POT-Creation-Date: 2018-08-21 10:58-0500\n"
+"PO-Revision-Date: 2014-11-07 07:12+0000\n"
+>>>>>>> MERGE-SOURCE
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: Catalan (Valencian) <ca@valencia@xxxxxx>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
 "X-Launchpad-Export-Date: 2018-02-25 05:44+0000\n"
 "X-Generator: Launchpad (build 18561)\n"
+=======
+"X-Launchpad-Export-Date: 2018-08-12 04:35+0000\n"
+"X-Generator: Launchpad (build 18747)\n"
+>>>>>>> MERGE-SOURCE
 
 #: ../bin/duplicity:133
 msgid "Reuse configured PASSPHRASE as SIGN_PASSPHRASE"
@@ -69,138 +81,248 @@
 "Continuing restart on file %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:331
+=======
+#: ../bin/duplicity:336
+#, python-format
+msgid "Remote filesize %d for %s does not match local size %d, retrying."
+msgstr ""
+
+#: ../bin/duplicity:343
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s was corrupted during upload."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:364
+=======
+#: ../bin/duplicity:376
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Restarting backup, but current encryption settings do not match original "
 "settings"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:387
+=======
+#: ../bin/duplicity:399
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Restarting after volume %s, file %s, block %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:457
+=======
+#: ../bin/duplicity:469
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:606
+=======
+#: ../bin/duplicity:618
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Fatal Error: Unable to start incremental backup.  Old signatures not found "
 "and incremental specified"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:610
+=======
+#: ../bin/duplicity:622
+>>>>>>> MERGE-SOURCE
 msgid "No signatures found, switching to full backup."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:624
+=======
+#: ../bin/duplicity:636
+>>>>>>> MERGE-SOURCE
 msgid "Backup Statistics"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:730
+=======
+#: ../bin/duplicity:742
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%s not found in archive - no files restored."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:734
+=======
+#: ../bin/duplicity:746
+>>>>>>> MERGE-SOURCE
 msgid "No files found in archive - nothing restored."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:767
+=======
+#: ../bin/duplicity:779
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d of %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:801
+=======
+#: ../bin/duplicity:813
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Invalid data - %s hash mismatch for file:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:804
+=======
+#: ../bin/duplicity:816
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Calculated hash: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:805
+=======
+#: ../bin/duplicity:817
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Manifest hash: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:848
+=======
+#: ../bin/duplicity:860
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Volume was signed by key %s, not %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:880
+=======
+#: ../bin/duplicity:892
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Verify complete: %s, %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:881
+=======
+#: ../bin/duplicity:893
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d file compared"
 msgid_plural "%d files compared"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:883
+=======
+#: ../bin/duplicity:895
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d difference found"
 msgid_plural "%d differences found"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:902
+=======
+#: ../bin/duplicity:914
+>>>>>>> MERGE-SOURCE
 msgid "No extraneous files found, nothing deleted in cleanup."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:907
+=======
+#: ../bin/duplicity:919
+>>>>>>> MERGE-SOURCE
 msgid "Deleting this file from backend:"
 msgid_plural "Deleting these files from backend:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:918
+=======
+#: ../bin/duplicity:930
+>>>>>>> MERGE-SOURCE
 msgid "Found the following file to delete:"
 msgid_plural "Found the following files to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:921
+=======
+#: ../bin/duplicity:933
+>>>>>>> MERGE-SOURCE
 msgid "Run duplicity again with the --force option to actually delete."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:964
+=======
+#: ../bin/duplicity:976
+>>>>>>> MERGE-SOURCE
 msgid "There are backup set(s) at time(s):"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:966
+=======
+#: ../bin/duplicity:978
+>>>>>>> MERGE-SOURCE
 msgid "Which can't be deleted because newer sets depend on them."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:970
+=======
+#: ../bin/duplicity:982
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Current active backup chain is older than specified time.  However, it will "
 "not be deleted.  To remove all your backups, manually purge the repository."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:983
+=======
+#: ../bin/duplicity:995
+>>>>>>> MERGE-SOURCE
 msgid "No old backup sets found, nothing deleted."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:986
+=======
+#: ../bin/duplicity:998
+>>>>>>> MERGE-SOURCE
 msgid "Deleting backup chain at time:"
 msgid_plural "Deleting backup chains at times:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:998
 #, python-format
 msgid "Deleting any incremental signature chain rooted at %s"
@@ -212,25 +334,51 @@
 msgstr ""
 
 #: ../bin/duplicity:1003
+=======
+#: ../bin/duplicity:1010
+#, python-format
+msgid "Deleting any incremental signature chain rooted at %s"
+msgstr ""
+
+#: ../bin/duplicity:1012
+#, python-format
+msgid "Deleting any incremental backup chain rooted at %s"
+msgstr ""
+
+#: ../bin/duplicity:1015
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete signature chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1005
+=======
+#: ../bin/duplicity:1017
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete backup chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1011
+=======
+#: ../bin/duplicity:1023
+>>>>>>> MERGE-SOURCE
 msgid "Found old backup chain at the following time:"
 msgid_plural "Found old backup chains at the following times:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1015
+=======
+#: ../bin/duplicity:1027
+>>>>>>> MERGE-SOURCE
 msgid "Rerun command with --force option to actually delete."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1028
 msgid "No old backup sets found."
 msgstr ""
@@ -251,80 +399,143 @@
 msgstr ""
 
 #: ../bin/duplicity:1092
+=======
+#: ../bin/duplicity:1104
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting local %s (not authoritative at backend)."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1097
+=======
+#: ../bin/duplicity:1109
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Unable to delete %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1128 ../duplicity/dup_temp.py:266
+=======
+#: ../bin/duplicity:1140 ../duplicity/dup_temp.py:266
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Failed to read %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1142
+=======
+#: ../bin/duplicity:1154
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Copying %s to local cache."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1190
+=======
+#: ../bin/duplicity:1202
+>>>>>>> MERGE-SOURCE
 msgid "Local and Remote metadata are synchronized, no sync needed."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1195
+=======
+#: ../bin/duplicity:1207
+>>>>>>> MERGE-SOURCE
 msgid "Synchronizing remote metadata to local cache..."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1207
+=======
+#: ../bin/duplicity:1219
+>>>>>>> MERGE-SOURCE
 msgid "Sync would copy the following from remote to local:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1210
+=======
+#: ../bin/duplicity:1222
+>>>>>>> MERGE-SOURCE
 msgid "Sync would remove the following spurious local files:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1253
+=======
+#: ../bin/duplicity:1265
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get free space on temp."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1261
+=======
+#: ../bin/duplicity:1273
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp space has %d available, backup needs approx %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1264
+=======
+#: ../bin/duplicity:1276
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp has %d available, backup will use approx %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1272
+=======
+#: ../bin/duplicity:1284
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get max open files."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1276
+=======
+#: ../bin/duplicity:1288
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Max open files of %s is too low, should be >= 1024.\n"
 "Use 'ulimit -n 1024' or higher to correct.\n"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1327
+=======
+#: ../bin/duplicity:1339
+>>>>>>> MERGE-SOURCE
 msgid ""
 "RESTART: The first volume failed to upload before termination.\n"
 "         Restart is impossible...starting backup from beginning."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1333
+=======
+#: ../bin/duplicity:1345
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Volumes %d to %d failed to upload before termination.\n"
 "         Restarting backup at volume %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1340
+=======
+#: ../bin/duplicity:1352
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n"
@@ -333,7 +544,11 @@
 "         backup then restart the backup from the beginning."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1361
+=======
+#: ../bin/duplicity:1373
+>>>>>>> MERGE-SOURCE
 msgid ""
 "\n"
 "PYTHONOPTIMIZE in the environment causes duplicity to fail to\n"
@@ -343,54 +558,100 @@
 "See https://bugs.launchpad.net/duplicity/+bug/931175\n";
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1384
 #, python-format
 msgid "Acquiring lockfile %s"
+=======
+#: ../bin/duplicity:1396
+#, python-format
+msgid "Acquiring lockfile %s"
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1442
+=======
+#: ../bin/duplicity:1454
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Last %s backup left a partial set, restarting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1446
+=======
+#: ../bin/duplicity:1458
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Cleaning up previous partial %s backup set, restarting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1458
+=======
+#: ../bin/duplicity:1470
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1460
+=======
+#: ../bin/duplicity:1472
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date: none"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1462
+=======
+#: ../bin/duplicity:1474
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup is too old, forcing full backup"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1506
+=======
+#: ../bin/duplicity:1518
+>>>>>>> MERGE-SOURCE
 msgid ""
 "When using symmetric encryption, the signing passphrase must equal the "
 "encryption passphrase."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1575
+=======
+#: ../bin/duplicity:1587
+>>>>>>> MERGE-SOURCE
 msgid "INT intercepted...exiting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1583
+=======
+#: ../bin/duplicity:1595
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "GPG error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1593
+=======
+#: ../bin/duplicity:1605
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "User error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1603
+=======
+#: ../bin/duplicity:1615
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Backend error detail: %s"
 msgstr ""
@@ -484,6 +745,7 @@
 "Use of default filenames is strongly suggested."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:78
 #, python-format
 msgid ""
@@ -504,6 +766,28 @@
 msgstr ""
 
 #. TRANSL: Used in usage help to represent a Unix-style path name. Example:
+=======
+#: ../duplicity/commandline.py:78
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"--include-filelist and --exclude-filelist now accept globbing characters and "
+"should be used instead."
+msgstr ""
+
+#: ../duplicity/commandline.py:88
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"On many GNU/Linux systems, stdin is represented by /dev/stdin and\n"
+"--include-filelist=/dev/stdin or --exclude-filelist=/dev/stdin could\n"
+"be used as a substitute."
+msgstr ""
+
+#. Used in usage help to represent a Unix-style path name. Example:
+>>>>>>> MERGE-SOURCE
 #. --archive-dir <path>
 #: ../duplicity/commandline.py:280 ../duplicity/commandline.py:290
 #: ../duplicity/commandline.py:311 ../duplicity/commandline.py:385
@@ -542,8 +826,13 @@
 msgid "filename"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent a regular expression (regexp).
 #: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+=======
+#. Used in usage help to represent a regular expression (regexp).
+#: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+>>>>>>> MERGE-SOURCE
 msgid "regular_expression"
 msgstr ""
 
@@ -571,8 +860,13 @@
 "not intended"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent an imap mailbox
 #: ../duplicity/commandline.py:432
+=======
+#. Used in usage help to represent an imap mailbox
+#: ../duplicity/commandline.py:432
+>>>>>>> MERGE-SOURCE
 msgid "imap_mailbox"
 msgstr ""
 
@@ -591,11 +885,17 @@
 msgid "number"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help (noun)
 #: ../duplicity/commandline.py:464
+=======
+#. Used in usage help (noun)
+#: ../duplicity/commandline.py:464
+>>>>>>> MERGE-SOURCE
 msgid "backup name"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:567
 msgid "policy"
 msgstr ""
@@ -603,6 +903,11 @@
 #. TRANSL: noun
 #: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
 #: ../duplicity/commandline.py:768
+=======
+#. noun
+#: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
+#: ../duplicity/commandline.py:768
+>>>>>>> MERGE-SOURCE
 msgid "command"
 msgstr ""
 
@@ -614,23 +919,43 @@
 msgid "pem formatted bundle of certificate authorities"
 msgstr ""
 
-#: ../duplicity/commandline.py:591
-msgid "path to a folder with certificate authority files"
-msgstr ""
-
-#. TRANSL: Used in usage help. Example:
-#. --timeout <seconds>
-#. TRANSL: Used in usage help. Example:
-#. --backend-retry-delay <seconds>
-#. TRANSL: Used in usage help. Example:
-#. --timeout <seconds>
-#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
-#: ../duplicity/commandline.py:831
+<<<<<<< TREE
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr ""
+
+#. TRANSL: Used in usage help. Example:
+#. --timeout <seconds>
+#. TRANSL: Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. TRANSL: Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+=======
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr ""
+
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#. Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+>>>>>>> MERGE-SOURCE
 msgid "seconds"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: abbreviation for "character" (noun)
 #: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+=======
+#. abbreviation for "character" (noun)
+#: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+>>>>>>> MERGE-SOURCE
 msgid "char"
 msgstr ""
 
@@ -679,13 +1004,23 @@
 msgid "container_name"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: noun
 #: ../duplicity/commandline.py:776
+=======
+#. noun
+#: ../duplicity/commandline.py:776
+>>>>>>> MERGE-SOURCE
 msgid "count"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent the name of a file directory
 #: ../duplicity/commandline.py:779
+=======
+#. Used in usage help to represent the name of a file directory
+#: ../duplicity/commandline.py:779
+>>>>>>> MERGE-SOURCE
 msgid "directory"
 msgstr ""
 
@@ -771,6 +1106,7 @@
 msgid "user"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: account id for b2. Example: b2://account_id@bucket/
 #: ../duplicity/commandline.py:877
 msgid "account_id"
@@ -784,18 +1120,37 @@
 
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:899
+=======
+#. account id for b2. Example: b2://account_id@bucket/
+#: ../duplicity/commandline.py:877
+msgid "account_id"
+msgstr ""
+
+#. application_key for b2.
+#. Example: b2://account_id:application_key@bucket/
+#: ../duplicity/commandline.py:881
+msgid "application_key"
+msgstr ""
+
+#. Header in usage help
+#: ../duplicity/commandline.py:899
+>>>>>>> MERGE-SOURCE
 msgid "Backends and their URL formats:"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:930
+=======
+#. Header in usage help
+#: ../duplicity/commandline.py:930
+>>>>>>> MERGE-SOURCE
 msgid "Commands:"
 msgstr ""
 
 #: ../duplicity/commandline.py:954
 #, python-format
-msgid ""
-"Specified archive directory '%s' does not exist, or is not a directory"
+msgid "Specified archive directory '%s' does not exist, or is not a directory"
 msgstr ""
 
 #: ../duplicity/commandline.py:963
@@ -1083,12 +1438,20 @@
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #. TRANSL: "cleanup" is a hard-coded command, so do not translate it
 #: ../duplicity/collections.py:666
 msgid ""
 "These may be deleted by running duplicity with the \"cleanup\" command."
 msgstr ""
 
+=======
+#. "cleanup" is a hard-coded command, so do not translate it
+#: ../duplicity/collections.py:666
+msgid "These may be deleted by running duplicity with the \"cleanup\" command."
+msgstr ""
+
+>>>>>>> MERGE-SOURCE
 #: ../duplicity/collections.py:669
 msgid "No orphaned or incomplete backup sets found."
 msgstr ""
@@ -1107,9 +1470,14 @@
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:748
 msgid ""
 "Warning, discarding last backup set, because of missing signature file."
+=======
+#: ../duplicity/collections.py:748
+msgid "Warning, discarding last backup set, because of missing signature file."
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
 #: ../duplicity/collections.py:771
@@ -1250,6 +1618,7 @@
 msgid "Connection failed, please check your password: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:85
 #, python-format
 msgid "MultiBackend: Could not parse query string %s: %s "
@@ -1495,6 +1864,247 @@
 msgid ""
 "basis_file must be a (true) file or an object whose file attribute is the "
 "underlying true file object"
+=======
+#: ../duplicity/backends/multibackend.py:85
+#, python-format
+msgid "MultiBackend: Could not parse query string %s: %s "
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:94
+#, python-format
+msgid "MultiBackend: Invalid query string %s: more than one value for %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:99
+#, python-format
+msgid "MultiBackend: Invalid query string %s: unknown parameter %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:149
+#: ../duplicity/backends/multibackend.py:154
+#, python-format
+msgid "MultiBackend: illegal value for %s: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:162
+#, python-format
+msgid "MultiBackend: Url %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:166
+#, python-format
+msgid "MultiBackend: Could not load config file %s: %s "
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:175
+#, python-format
+msgid "MultiBackend: use store %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:180
+#, python-format
+msgid "MultiBackend: set env %s = %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:206
+#, python-format
+msgid "MultiBackend: _put: write to store #%s (%s)"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:219
+#, python-format
+msgid "MultiBackend: failed to write to store #%s (%s), try #%s, Exception: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:226
+#, python-format
+msgid "MultiBackend: failed to write %s. Aborting process."
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:233
+#, python-format
+msgid ""
+"MultiBackend: failed to write %s. Tried all backing stores and none succeeded"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:250
+#, python-format
+msgid "MultiBackend: failed to get %s to %s from %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:253
+#, python-format
+msgid ""
+"MultiBackend: failed to get %s. Tried all backing stores and none succeeded"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:262
+#, python-format
+msgid "MultiBackend: list from %s: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:268
+#, python-format
+msgid "MultiBackend: combined list: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:290
+#, python-format
+msgid "MultiBackend: failed to delete %s from %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:294
+#, python-format
+msgid ""
+"MultiBackend: failed to delete %s. Tried all backing stores and none "
+"succeeded"
+msgstr ""
+
+#: ../duplicity/backends/pydrivebackend.py:143
+#, python-format
+msgid "PyDrive backend: multiple files called '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:61
+msgid "Missing socket or ssl python modules."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:79
+#, python-format
+msgid "Cacert database file '%s' is not readable."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:100
+msgid ""
+"Option '--ssl-cacert-path' is not supported with python 2.7.8 and below."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:104
+#, python-format
+msgid ""
+"For certificate verification with python 2.7.8 or earlier a cacert database\n"
+"file is needed in one of these locations: %s\n"
+"Hints:\n"
+"  Consult the man page, chapter 'SSL Certificate Verification'.\n"
+"  Consider using the options --ssl-cacert-file, --ssl-no-check-certificate ."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:150
+#, python-format
+msgid "Using WebDAV protocol %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:151
+#, python-format
+msgid "Using WebDAV host %s port %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:153
+#, python-format
+msgid "Using WebDAV directory %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:184
+#, python-format
+msgid "WebDAV create connection on '%s'"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:195
+#, python-format
+msgid "WebDAV Unknown URI scheme: %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:214
+#, python-format
+msgid "WebDAV %s %s request with headers: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:215
+#: ../duplicity/backends/webdavbackend.py:238
+#, python-format
+msgid "WebDAV data length: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:218
+#, python-format
+msgid "WebDAV response status %s with reason '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:224
+#, python-format
+msgid "WebDAV redirect to: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:226
+msgid "WebDAV redirected 10 times. Giving up."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:231
+msgid "WebDAV missing location header in redirect response."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:236
+msgid "WebDAV retry request with authentification headers."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:237
+#, python-format
+msgid "WebDAV %s %s request2 with headers: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:241
+#, python-format
+msgid "WebDAV response2 status %s with reason '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:258
+msgid ""
+"python-kerberos needed to use kerberos                           "
+"authorization, falling back to basic auth."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:262
+#, python-format
+msgid ""
+"Kerberos authorization failed: %s.                          Falling back to "
+"basic auth."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:360
+#, python-format
+msgid "Creating missing directory %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:364
+#, python-format
+msgid "WebDAV MKCOL %s failed: %s %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:377
+#, python-format
+msgid "WebDAV path decoding and translation: %s -> %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:422
+#, python-format
+msgid "WebDAV GET Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:444
+#, python-format
+msgid "WebDAV PUT Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:464
+#, python-format
+msgid "WebDAV DEL Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/librsync.py:184
+msgid ""
+"basis_file must be a (true) file or an object whose file attribute is the "
+"underlying true file object"
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
 #: ../duplicity/manifest.py:91
@@ -1521,6 +2131,7 @@
 "seeing this message"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:192
 #, python-format
 msgid "Found manifest volume %s"
@@ -1538,6 +2149,19 @@
 msgstr ""
 
 #: ../duplicity/manifest.py:213
+=======
+#: ../duplicity/manifest.py:192
+#, python-format
+msgid "Found manifest volume %s"
+msgstr ""
+
+#: ../duplicity/manifest.py:199
+#, python-format
+msgid "Found %s volumes in manifest"
+msgstr ""
+
+#: ../duplicity/manifest.py:213
+>>>>>>> MERGE-SOURCE
 msgid "Manifests not equal because different volume numbers"
 msgstr ""
 

=== modified file 'po/cs.po'
--- po/cs.po	2018-02-25 05:44:50 +0000
+++ po/cs.po	2019-05-20 08:57:58 +0000
@@ -6,17 +6,30 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: duplicity\n"
+<<<<<<< TREE
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2018-02-24 06:05+0000\n"
 "PO-Revision-Date: 2018-02-23 14:32+0000\n"
 "Last-Translator: Pavel Borecki <Unknown>\n"
+=======
+"Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
+"POT-Creation-Date: 2018-08-21 10:58-0500\n"
+"PO-Revision-Date: 2017-12-05 19:36+0000\n"
+"Last-Translator: Pavel Borecki <Unknown>\n"
+>>>>>>> MERGE-SOURCE
 "Language-Team: Czech <cs@xxxxxx>\n"
+"Language: cs\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+<<<<<<< TREE
 "X-Launchpad-Export-Date: 2018-02-25 05:44+0000\n"
 "X-Generator: Launchpad (build 18561)\n"
+=======
+"X-Launchpad-Export-Date: 2018-08-12 04:35+0000\n"
+"X-Generator: Launchpad (build 18747)\n"
+>>>>>>> MERGE-SOURCE
 
 #: ../bin/duplicity:133
 msgid "Reuse configured PASSPHRASE as SIGN_PASSPHRASE"
@@ -72,15 +85,31 @@
 "File %s missing in backup set.\n"
 "Continuing restart on file %s."
 msgstr ""
+<<<<<<< TREE
 "Soubor %s chybí v sadě zálohy.\n"
 "Pokračuje se restartem na souboru %s."
 
 #: ../bin/duplicity:331
+=======
+"Soubor %s chybí v sadě zálohy.\n"
+"Pokračuje se restartem na souboru %s."
+
+#: ../bin/duplicity:336
+#, python-format
+msgid "Remote filesize %d for %s does not match local size %d, retrying."
+msgstr ""
+
+#: ../bin/duplicity:343
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s was corrupted during upload."
 msgstr "Soubor %s byl během nahrávání poškozen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:364
+=======
+#: ../bin/duplicity:376
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Restarting backup, but current encryption settings do not match original "
 "settings"
@@ -88,17 +117,29 @@
 "Záloha se restartuje, ale stávající nastavení šifrování se neshodují s "
 "původními nastaveními"
 
+<<<<<<< TREE
 #: ../bin/duplicity:387
+=======
+#: ../bin/duplicity:399
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Restarting after volume %s, file %s, block %s"
 msgstr "Restartuje se po svazku %s, soubor %s, blok %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:457
+=======
+#: ../bin/duplicity:469
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d"
 msgstr "Zpracovaný svazek %d"
 
+<<<<<<< TREE
 #: ../bin/duplicity:606
+=======
+#: ../bin/duplicity:618
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Fatal Error: Unable to start incremental backup.  Old signatures not found "
 "and incremental specified"
@@ -106,54 +147,98 @@
 "Fatální chyba: Nedaří se spustit přírůstkovou zálohu. Staré podpisy nebyly "
 "nalezeny a přírůstková určena"
 
+<<<<<<< TREE
 #: ../bin/duplicity:610
+=======
+#: ../bin/duplicity:622
+>>>>>>> MERGE-SOURCE
 msgid "No signatures found, switching to full backup."
 msgstr "Nebyly nalezeny podpisy, přepíná se na plnou zálohu."
 
+<<<<<<< TREE
 #: ../bin/duplicity:624
+=======
+#: ../bin/duplicity:636
+>>>>>>> MERGE-SOURCE
 msgid "Backup Statistics"
 msgstr "Statistiky záloh"
 
+<<<<<<< TREE
 #: ../bin/duplicity:730
+=======
+#: ../bin/duplicity:742
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%s not found in archive - no files restored."
 msgstr "%s nenalezeno v archivu – nebyly obnoveny žádné soubory."
 
+<<<<<<< TREE
 #: ../bin/duplicity:734
+=======
+#: ../bin/duplicity:746
+>>>>>>> MERGE-SOURCE
 msgid "No files found in archive - nothing restored."
 msgstr "V archivu nejsou žádné soubory - nic nebylo obnoveno."
 
+<<<<<<< TREE
 #: ../bin/duplicity:767
+=======
+#: ../bin/duplicity:779
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d of %d"
 msgstr "Zpracován svazek %d z %d"
 
+<<<<<<< TREE
 #: ../bin/duplicity:801
+=======
+#: ../bin/duplicity:813
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Invalid data - %s hash mismatch for file:"
 msgstr "Neplatná data - nesouhlasí otisk (hash) %s pro soubor:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:804
+=======
+#: ../bin/duplicity:816
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Calculated hash: %s"
 msgstr "Spočítaný otisk (hash): %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:805
+=======
+#: ../bin/duplicity:817
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Manifest hash: %s"
 msgstr "Otisk z manifestu: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:848
+=======
+#: ../bin/duplicity:860
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Volume was signed by key %s, not %s"
 msgstr "Svazek byl podpesán klíčem %s, nikoli %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:880
+=======
+#: ../bin/duplicity:892
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Verify complete: %s, %s."
 msgstr "Kontrola dokončena: %s, %s."
 
+<<<<<<< TREE
 #: ../bin/duplicity:881
+=======
+#: ../bin/duplicity:893
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d file compared"
 msgid_plural "%d files compared"
@@ -161,7 +246,11 @@
 msgstr[1] "%d soubory porovnány"
 msgstr[2] "%d souborů porovnáno"
 
+<<<<<<< TREE
 #: ../bin/duplicity:883
+=======
+#: ../bin/duplicity:895
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d difference found"
 msgid_plural "%d differences found"
@@ -169,37 +258,65 @@
 msgstr[1] "%d rozdíly nalezeny"
 msgstr[2] "%d rozdílů nalezeno"
 
+<<<<<<< TREE
 #: ../bin/duplicity:902
+=======
+#: ../bin/duplicity:914
+>>>>>>> MERGE-SOURCE
 msgid "No extraneous files found, nothing deleted in cleanup."
 msgstr "Nenalezeny žádné zbytečné soubory, během úklidu nebylo nic smazáno."
 
+<<<<<<< TREE
 #: ../bin/duplicity:907
+=======
+#: ../bin/duplicity:919
+>>>>>>> MERGE-SOURCE
 msgid "Deleting this file from backend:"
 msgid_plural "Deleting these files from backend:"
 msgstr[0] "Mazání tohoto souboru z podpůrné vrtvy (backend):"
 msgstr[1] "Mazání těchto souborů z podpůrné vrtvy (backend):"
 msgstr[2] "Mazání těchto souborů z podpůrné vrtvy (backend):"
 
+<<<<<<< TREE
 #: ../bin/duplicity:918
+=======
+#: ../bin/duplicity:930
+>>>>>>> MERGE-SOURCE
 msgid "Found the following file to delete:"
 msgid_plural "Found the following files to delete:"
 msgstr[0] "Nalezen následující soubor ke smazání:"
 msgstr[1] "Nalezeny následující soubory ke smazání:"
 msgstr[2] "Nalezeno následujících souborů ke smazání:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:921
+=======
+#: ../bin/duplicity:933
+>>>>>>> MERGE-SOURCE
 msgid "Run duplicity again with the --force option to actually delete."
 msgstr "Spusť duplicity znovu s volbou --force pro skutečné mazání."
 
+<<<<<<< TREE
 #: ../bin/duplicity:964
+=======
+#: ../bin/duplicity:976
+>>>>>>> MERGE-SOURCE
 msgid "There are backup set(s) at time(s):"
 msgstr "Jsou zde sady záloh v časech:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:966
+=======
+#: ../bin/duplicity:978
+>>>>>>> MERGE-SOURCE
 msgid "Which can't be deleted because newer sets depend on them."
 msgstr "Které není možné smazat protože na nich závisí novější sady."
 
+<<<<<<< TREE
 #: ../bin/duplicity:970
+=======
+#: ../bin/duplicity:982
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Current active backup chain is older than specified time.  However, it will "
 "not be deleted.  To remove all your backups, manually purge the repository."
@@ -207,13 +324,22 @@
 "Stávající aktivní řetěz záloh je starší než zadaný čas. Nicméně, nebude "
 "smazán. Pro smazání všech svých záloh vyčistěte repozitář ručně."
 
+<<<<<<< TREE
 #: ../bin/duplicity:983
+=======
+#: ../bin/duplicity:995
+>>>>>>> MERGE-SOURCE
 msgid "No old backup sets found, nothing deleted."
 msgstr "Nenalezeny žádné staré sady záloh, nic nebylo smazáno."
 
+<<<<<<< TREE
 #: ../bin/duplicity:986
+=======
+#: ../bin/duplicity:998
+>>>>>>> MERGE-SOURCE
 msgid "Deleting backup chain at time:"
 msgid_plural "Deleting backup chains at times:"
+<<<<<<< TREE
 msgstr[0] "Maže se řetěz zálohy v čase:"
 msgstr[1] "Mažou se řetězce zálohy v čase:"
 msgstr[2] "Maže se řetězců zálohy v čase:"
@@ -229,25 +355,55 @@
 msgstr "Mažou se všechny řetězy přírůstkové zálohy počínaje v %s"
 
 #: ../bin/duplicity:1003
+=======
+msgstr[0] "Maže se řetěz zálohy v čase:"
+msgstr[1] "Mažou se řetězce zálohy v čase:"
+msgstr[2] "Maže se řetězců zálohy v čase:"
+
+#: ../bin/duplicity:1010
+#, python-format
+msgid "Deleting any incremental signature chain rooted at %s"
+msgstr "Mažou se všechny přírůstkové signatury řetězců počínající v %s"
+
+#: ../bin/duplicity:1012
+#, python-format
+msgid "Deleting any incremental backup chain rooted at %s"
+msgstr "Mažou se všechny řetězy přírůstkové zálohy počínaje v %s"
+
+#: ../bin/duplicity:1015
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete signature chain %s"
 msgstr "Maže se celý řetěz podpisů %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1005
+=======
+#: ../bin/duplicity:1017
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete backup chain %s"
 msgstr "Maže se celý řetěz záloh %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1011
+=======
+#: ../bin/duplicity:1023
+>>>>>>> MERGE-SOURCE
 msgid "Found old backup chain at the following time:"
 msgid_plural "Found old backup chains at the following times:"
 msgstr[0] "Nalezen starý řetěz záloh v následujících časech:"
 msgstr[1] "Nalezeny staré řetězy záloh v následujících časech:"
 msgstr[2] "Nalezeno starých řetězů záloh v následujících časech:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1015
+=======
+#: ../bin/duplicity:1027
+>>>>>>> MERGE-SOURCE
 msgid "Rerun command with --force option to actually delete."
 msgstr ""
+<<<<<<< TREE
 "Aby došlo ke skutečnému smazání, spusťte příkaz znovu s volbou --force."
 
 #: ../bin/duplicity:1028
@@ -270,62 +426,123 @@
 msgstr "Sada záloh %s je už replikovaná"
 
 #: ../bin/duplicity:1092
+=======
+"Aby došlo ke skutečnému smazání, spusťte příkaz znovu s volbou --force."
+
+#: ../bin/duplicity:1104
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting local %s (not authoritative at backend)."
 msgstr "Mazání místní %s (neautoritativní z pohledu podpůrné vrstvy)."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1097
+=======
+#: ../bin/duplicity:1109
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Unable to delete %s: %s"
 msgstr "%s se nedaří smazat: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1128 ../duplicity/dup_temp.py:266
+=======
+#: ../bin/duplicity:1140 ../duplicity/dup_temp.py:266
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Failed to read %s: %s"
 msgstr "Nepodařilo se načíst %s: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1142
+=======
+#: ../bin/duplicity:1154
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Copying %s to local cache."
 msgstr "Kopíruje se %s do mezipaměti na tomto stroji."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1190
+=======
+#: ../bin/duplicity:1202
+>>>>>>> MERGE-SOURCE
 msgid "Local and Remote metadata are synchronized, no sync needed."
+<<<<<<< TREE
 msgstr ""
 "Místní a vzdálená metadata jsou synchronní, není třeba synchronizace."
+=======
+msgstr "Místní a vzdálená metadata jsou synchronní, není třeba synchronizace."
+>>>>>>> MERGE-SOURCE
 
+<<<<<<< TREE
 #: ../bin/duplicity:1195
+=======
+#: ../bin/duplicity:1207
+>>>>>>> MERGE-SOURCE
 msgid "Synchronizing remote metadata to local cache..."
 msgstr "Synchronizace vzdálených metadat do místní mezipaměti…"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1207
+=======
+#: ../bin/duplicity:1219
+>>>>>>> MERGE-SOURCE
 msgid "Sync would copy the following from remote to local:"
 msgstr "Sync by zkopíroval následující ze vzdáleného na místní:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1210
+=======
+#: ../bin/duplicity:1222
+>>>>>>> MERGE-SOURCE
 msgid "Sync would remove the following spurious local files:"
 msgstr "Sync by odebralo následující zbytečné místní soubory:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1253
+=======
+#: ../bin/duplicity:1265
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get free space on temp."
 msgstr "Nedaří se zjistit volné místo na dočasném."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1261
+=======
+#: ../bin/duplicity:1273
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp space has %d available, backup needs approx %d."
+<<<<<<< TREE
 msgstr ""
 "Na dočasném prostoru je k dispozici %d, záloha potřebuje přibližně %d."
+=======
+msgstr "Na dočasném prostoru je k dispozici %d, záloha potřebuje přibližně %d."
+>>>>>>> MERGE-SOURCE
 
+<<<<<<< TREE
 #: ../bin/duplicity:1264
+=======
+#: ../bin/duplicity:1276
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp has %d available, backup will use approx %d."
 msgstr "Na dočasném prostoru je k dispozici %d, záloha využije přibližně %d."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1272
+=======
+#: ../bin/duplicity:1284
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get max open files."
 msgstr "Nedaří se zjistit limit počtu otevřených souborů."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1276
+=======
+#: ../bin/duplicity:1288
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Max open files of %s is too low, should be >= 1024.\n"
@@ -334,7 +551,11 @@
 "Limit naráz otevřených souborů %s je příliš nízký, měl by být >= 1024.\n"
 "Napravte to spuštěním příkazu „ulimit -n 1024“ (nebo s vyšší hodnotou).\n"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1327
+=======
+#: ../bin/duplicity:1339
+>>>>>>> MERGE-SOURCE
 msgid ""
 "RESTART: The first volume failed to upload before termination.\n"
 "         Restart is impossible...starting backup from beginning."
@@ -342,7 +563,11 @@
 "RESTART: První svazek se nepodařilo nahrát před ukončením.\n"
 "         Restart není možný, záloha se spouští znovu od začátku."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1333
+=======
+#: ../bin/duplicity:1345
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Volumes %d to %d failed to upload before termination.\n"
@@ -351,7 +576,11 @@
 "RESTART: Svazky %d až %d se nepodařilo nahrát před ukončením.\n"
 "         Restartuje se záloha u svazku %d."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1340
+=======
+#: ../bin/duplicity:1352
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n"
@@ -364,7 +593,11 @@
 "pak\n"
 "         restartuje zálohu od začátku."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1361
+=======
+#: ../bin/duplicity:1373
+>>>>>>> MERGE-SOURCE
 msgid ""
 "\n"
 "PYTHONOPTIMIZE in the environment causes duplicity to fail to\n"
@@ -373,6 +606,7 @@
 "\n"
 "See https://bugs.launchpad.net/duplicity/+bug/931175\n";
 msgstr ""
+<<<<<<< TREE
 "\n"
 "PYTHONOPTIMIZE v prostředí způsobí, že duplicity nerozpozná\n"
 "své vlastní zálohy. Odstraňte PYTHONOPTIMIZE z prostředí\n"
@@ -386,29 +620,68 @@
 msgstr "Získává se zamykací soubor %s"
 
 #: ../bin/duplicity:1442
+=======
+"\n"
+"PYTHONOPTIMIZE v prostředí způsobí, že duplicity nerozpozná\n"
+"své vlastní zálohy. Odstraňte PYTHONOPTIMIZE z prostředí\n"
+"a spusťte zálohu znovu.\n"
+"\n"
+"Viz https://bugs.launchpad.net/duplicity/+bug/931175\n";
+
+#: ../bin/duplicity:1396
+#, python-format
+msgid "Acquiring lockfile %s"
+msgstr "Získává se zamykací soubor %s"
+
+#: ../bin/duplicity:1454
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Last %s backup left a partial set, restarting."
 msgstr "Poslední %s záloha zanechala částečnou sadu, restartuje se."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1446
+=======
+#: ../bin/duplicity:1458
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Cleaning up previous partial %s backup set, restarting."
 msgstr "Čištění předchozí částečné %s sady záloh, restartuje se."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1458
+=======
+#: ../bin/duplicity:1470
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date:"
 msgstr "Datum poslední úplné zálohy:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1460
+=======
+#: ../bin/duplicity:1472
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date: none"
 msgstr "Datum poslední plné zálohy: žádná"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1462
+=======
+#: ../bin/duplicity:1474
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup is too old, forcing full backup"
+<<<<<<< TREE
 msgstr ""
 "Poslední plná záloha je příliš stará, vynucuje se pořízení plné zálohy"
+=======
+msgstr "Poslední plná záloha je příliš stará, vynucuje se pořízení plné zálohy"
+>>>>>>> MERGE-SOURCE
 
+<<<<<<< TREE
 #: ../bin/duplicity:1506
+=======
+#: ../bin/duplicity:1518
+>>>>>>> MERGE-SOURCE
 msgid ""
 "When using symmetric encryption, the signing passphrase must equal the "
 "encryption passphrase."
@@ -416,21 +689,37 @@
 "Při použití symetrického šifrování je třeba, aby podpisovací heslová fráze "
 "byla stejná, jako ta šifrovací."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1575
+=======
+#: ../bin/duplicity:1587
+>>>>>>> MERGE-SOURCE
 msgid "INT intercepted...exiting."
 msgstr "Zachyceno přerušení, ukončuje se."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1583
+=======
+#: ../bin/duplicity:1595
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "GPG error detail: %s"
 msgstr "Podrobnosti chyby GPG: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1593
+=======
+#: ../bin/duplicity:1605
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "User error detail: %s"
 msgstr "Podrobnosti uživateské chyby: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1603
+=======
+#: ../bin/duplicity:1615
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Backend error detail: %s"
 msgstr "Podrobnosti chyby na podpůrné vrstvě (backend): %s"
@@ -538,6 +827,7 @@
 "release.\n"
 "Use of default filenames is strongly suggested."
 msgstr ""
+<<<<<<< TREE
 "Varování: Volbu %s čeká zastarání a bude odebrána v budoucím vydání.\n"
 "Použití výchozích názvů souborů je silně doporučováno."
 
@@ -569,6 +859,39 @@
 "být použity jako náhrada."
 
 #. TRANSL: Used in usage help to represent a Unix-style path name. Example:
+=======
+"Varování: Volbu %s čeká zastarání a bude odebrána v budoucím vydání.\n"
+"Použití výchozích názvů souborů je silně doporučováno."
+
+#: ../duplicity/commandline.py:78
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"--include-filelist and --exclude-filelist now accept globbing characters and "
+"should be used instead."
+msgstr ""
+"Varování: Volbu %s čeká zastarání a bude odebrána v budoucím vydání.\n"
+"volby --include-filelist a --exclude-filelist nyní přijímají zástupné znaky "
+"a měly by být použity namísto toho."
+
+#: ../duplicity/commandline.py:88
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"On many GNU/Linux systems, stdin is represented by /dev/stdin and\n"
+"--include-filelist=/dev/stdin or --exclude-filelist=/dev/stdin could\n"
+"be used as a substitute."
+msgstr ""
+"Varování: Volbu %s čeká zastarání a bude odebrána v budoucím vydání.\n"
+"Na mnoha GNU/Linux systémech, stdin je představován /dev/stdin a\n"
+"volby --include-filelist=/dev/stdin nebo --exclude-filelist=/dev/stdin "
+"mohou\n"
+"být použity jako náhrada."
+
+#. Used in usage help to represent a Unix-style path name. Example:
+>>>>>>> MERGE-SOURCE
 #. --archive-dir <path>
 #: ../duplicity/commandline.py:280 ../duplicity/commandline.py:290
 #: ../duplicity/commandline.py:311 ../duplicity/commandline.py:385
@@ -607,8 +930,13 @@
 msgid "filename"
 msgstr "soubor"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent a regular expression (regexp).
 #: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+=======
+#. Used in usage help to represent a regular expression (regexp).
+#: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+>>>>>>> MERGE-SOURCE
 msgid "regular_expression"
 msgstr "r_egulární výraz"
 
@@ -638,8 +966,13 @@
 "Spuštěno v režimu „ignorovat chyby“ kvůli %s – znovu zvažte zda toto bylo "
 "zamýšleno"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent an imap mailbox
 #: ../duplicity/commandline.py:432
+=======
+#. Used in usage help to represent an imap mailbox
+#: ../duplicity/commandline.py:432
+>>>>>>> MERGE-SOURCE
 msgid "imap_mailbox"
 msgstr "imap_schranka"
 
@@ -658,9 +991,15 @@
 msgid "number"
 msgstr "číslo"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help (noun)
 #: ../duplicity/commandline.py:464
+=======
+#. Used in usage help (noun)
+#: ../duplicity/commandline.py:464
+>>>>>>> MERGE-SOURCE
 msgid "backup name"
+<<<<<<< TREE
 msgstr "název zálohy"
 
 #: ../duplicity/commandline.py:567
@@ -670,6 +1009,13 @@
 #. TRANSL: noun
 #: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
 #: ../duplicity/commandline.py:768
+=======
+msgstr "název zálohy"
+
+#. noun
+#: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
+#: ../duplicity/commandline.py:768
+>>>>>>> MERGE-SOURCE
 msgid "command"
 msgstr "příkaz"
 
@@ -679,25 +1025,47 @@
 
 #: ../duplicity/commandline.py:590
 msgid "pem formatted bundle of certificate authorities"
-msgstr "balíček certifikátů cert. autorit ve formátu pem"
-
-#: ../duplicity/commandline.py:591
-msgid "path to a folder with certificate authority files"
-msgstr "popis umístění složky se soubory certifikačních autorit"
-
-#. TRANSL: Used in usage help. Example:
-#. --timeout <seconds>
-#. TRANSL: Used in usage help. Example:
-#. --backend-retry-delay <seconds>
-#. TRANSL: Used in usage help. Example:
-#. --timeout <seconds>
-#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
-#: ../duplicity/commandline.py:831
+<<<<<<< TREE
+msgstr "balíček certifikátů cert. autorit ve formátu pem"
+
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr "popis umístění složky se soubory certifikačních autorit"
+
+#. TRANSL: Used in usage help. Example:
+#. --timeout <seconds>
+#. TRANSL: Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. TRANSL: Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+=======
+msgstr "balíček certifikátů cert. autorit ve formátu pem"
+
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr "popis umístění složky se soubory certifikačních autorit"
+
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#. Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+>>>>>>> MERGE-SOURCE
 msgid "seconds"
 msgstr "sekund"
 
+<<<<<<< TREE
 #. TRANSL: abbreviation for "character" (noun)
 #: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+=======
+#. abbreviation for "character" (noun)
+#: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+>>>>>>> MERGE-SOURCE
 msgid "char"
 msgstr "znak"
 
@@ -746,13 +1114,23 @@
 msgid "container_name"
 msgstr "název_kontejneru"
 
+<<<<<<< TREE
 #. TRANSL: noun
 #: ../duplicity/commandline.py:776
+=======
+#. noun
+#: ../duplicity/commandline.py:776
+>>>>>>> MERGE-SOURCE
 msgid "count"
 msgstr "počet"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent the name of a file directory
 #: ../duplicity/commandline.py:779
+=======
+#. Used in usage help to represent the name of a file directory
+#: ../duplicity/commandline.py:779
+>>>>>>> MERGE-SOURCE
 msgid "directory"
 msgstr "složka"
 
@@ -836,6 +1214,7 @@
 #. ftp://user[:password]@other.host[:port]/some_dir
 #: ../duplicity/commandline.py:874
 msgid "user"
+<<<<<<< TREE
 msgstr "uživatel"
 
 #. TRANSL: account id for b2. Example: b2://account_id@bucket/
@@ -851,12 +1230,35 @@
 
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:899
+=======
+msgstr "uživatel"
+
+#. account id for b2. Example: b2://account_id@bucket/
+#: ../duplicity/commandline.py:877
+msgid "account_id"
+msgstr "identifikator_uctu"
+
+#. application_key for b2.
+#. Example: b2://account_id:application_key@bucket/
+#: ../duplicity/commandline.py:881
+msgid "application_key"
+msgstr "aplikacni_klic"
+
+#. Header in usage help
+#: ../duplicity/commandline.py:899
+>>>>>>> MERGE-SOURCE
 msgid "Backends and their URL formats:"
 msgstr "Podpůrné vrstvy (backend) a formáty jejich URL adres:"
 
+<<<<<<< TREE
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:930
+=======
+#. Header in usage help
+#: ../duplicity/commandline.py:930
+>>>>>>> MERGE-SOURCE
 msgid "Commands:"
+<<<<<<< TREE
 msgstr "Příkazy:"
 
 #: ../duplicity/commandline.py:954
@@ -869,6 +1271,19 @@
 #, python-format
 msgid ""
 "Sign key should be an 8, 16 alt. 40 character hex string, like 'AA0E73D2'.\n"
+=======
+msgstr "Příkazy:"
+
+#: ../duplicity/commandline.py:954
+#, python-format
+msgid "Specified archive directory '%s' does not exist, or is not a directory"
+msgstr "Zadaná složka archivu „%s“ neexistuje, nebo se nejedná o složku"
+
+#: ../duplicity/commandline.py:963
+#, python-format
+msgid ""
+"Sign key should be an 8, 16 alt. 40 character hex string, like 'AA0E73D2'.\n"
+>>>>>>> MERGE-SOURCE
 "Received '%s' instead."
 msgstr ""
 "Podpisový klíč by měl být 8, 16 a případně 40 znaků dlouhý hex řetězec jako "
@@ -955,6 +1370,7 @@
 #: ../duplicity/backend.py:488
 #, python-format
 msgid "Reading results of '%s'"
+<<<<<<< TREE
 msgstr "Čtení výsledků „%s“"
 
 #: ../duplicity/backend.py:514
@@ -967,6 +1383,19 @@
 msgid "File %s not found locally after get from backend"
 msgstr ""
 "Soubor %s nebyl nalezen lokálně po získání z podpůrné vrstvy (backend)"
+=======
+msgstr "Čtení výsledků „%s“"
+
+#: ../duplicity/backend.py:514
+#, python-format
+msgid "Writing %s"
+msgstr "Zápis %s"
+
+#: ../duplicity/backend.py:555
+#, python-format
+msgid "File %s not found locally after get from backend"
+msgstr "Soubor %s nebyl nalezen lokálně po získání z podpůrné vrstvy (backend)"
+>>>>>>> MERGE-SOURCE
 
 #: ../duplicity/asyncscheduler.py:67
 #, python-format
@@ -1157,14 +1586,20 @@
 msgid_plural "Also found %d backup sets not part of any chain,"
 msgstr[0] "Také nalezena %d sada zálohy která není součástí žádného řetězce,"
 msgstr[1] ""
+<<<<<<< TREE
 "Také nalezeny %d sady zálohy, které nejsou součástí žádného řetězce,"
 msgstr[2] ""
 "Také nalezeno %d sad záloh, které nejsou součástí žádného řetězce,"
+=======
+"Také nalezeny %d sady zálohy, které nejsou součástí žádného řetězce,"
+msgstr[2] "Také nalezeno %d sad záloh, které nejsou součástí žádného řetězce,"
+>>>>>>> MERGE-SOURCE
 
 #: ../duplicity/collections.py:661
 #, python-format
 msgid "and %d incomplete backup set."
 msgid_plural "and %d incomplete backup sets."
+<<<<<<< TREE
 msgstr[0] "a %d neúplná sada záloh."
 msgstr[1] "a %d neúplné sady záloh."
 msgstr[2] "a %d neúplných sad záloh."
@@ -1176,6 +1611,18 @@
 msgstr ""
 "Ty mohou být smazány spuštěním duplicity s příkazem „cleanup“ (vyčištění)."
 
+=======
+msgstr[0] "a %d neúplná sada záloh."
+msgstr[1] "a %d neúplné sady záloh."
+msgstr[2] "a %d neúplných sad záloh."
+
+#. "cleanup" is a hard-coded command, so do not translate it
+#: ../duplicity/collections.py:666
+msgid "These may be deleted by running duplicity with the \"cleanup\" command."
+msgstr ""
+"Ty mohou být smazány spuštěním duplicity s příkazem „cleanup“ (vyčištění)."
+
+>>>>>>> MERGE-SOURCE
 #: ../duplicity/collections.py:669
 msgid "No orphaned or incomplete backup sets found."
 msgstr "Nebyly nalezeny žádné k ničemu nepatřící nebo neúplné sady záloh."
@@ -1196,9 +1643,14 @@
 msgstr[1] "%d soubory existují v mezipaměti"
 msgstr[2] "%d souborů existuje v mezipaměti"
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:748
 msgid ""
 "Warning, discarding last backup set, because of missing signature file."
+=======
+#: ../duplicity/collections.py:748
+msgid "Warning, discarding last backup set, because of missing signature file."
+>>>>>>> MERGE-SOURCE
 msgstr ""
 "Varování, zahazuje se nejnovější sada záloh, protože chybí soubor s podpisem."
 
@@ -1288,6 +1740,7 @@
 "No signature chain for the requested time. Using oldest available chain, "
 "starting at time %s."
 msgstr ""
+<<<<<<< TREE
 "Pro požadovaný čas neexistuje žádný řetězec podpisu. Náhradně se použije "
 "starší dostupný řetězec, začínající v čase %s."
 
@@ -1304,6 +1757,10 @@
 #: ../duplicity/collections.py:1237
 msgid "Type of file change:"
 msgstr "Typ změny souboru:"
+=======
+"Pro požadovaný čas neexistuje žádný řetězec podpisu. Náhradně se použije "
+"starší dostupný řetězec, začínající v čase %s."
+>>>>>>> MERGE-SOURCE
 
 #: ../duplicity/robust.py:61
 #, python-format
@@ -1358,6 +1815,7 @@
 #: ../duplicity/backends/giobackend.py:110
 #, python-format
 msgid "Connection failed, please check your password: %s"
+<<<<<<< TREE
 msgstr "Připojení se nezdařilo, prosím zkontrolujte své heslo: %s"
 
 #: ../duplicity/backends/multibackend.py:85
@@ -1627,6 +2085,270 @@
 msgstr ""
 "je třeba, aby basis_file byl (skutečný) soubor nebo objekt, jehož souborový "
 "atribut je je skutečným souborovým objektem"
+=======
+msgstr "Připojení se nezdařilo, prosím zkontrolujte své heslo: %s"
+
+#: ../duplicity/backends/multibackend.py:85
+#, python-format
+msgid "MultiBackend: Could not parse query string %s: %s "
+msgstr "MultiBackend: nepodařilo se zpracovat řetězec dotazu %s: %s "
+
+#: ../duplicity/backends/multibackend.py:94
+#, python-format
+msgid "MultiBackend: Invalid query string %s: more than one value for %s"
+msgstr ""
+"MultiBackend: neplatný řetězec dotazu %s: více než jedna hodnota pro %s"
+
+#: ../duplicity/backends/multibackend.py:99
+#, python-format
+msgid "MultiBackend: Invalid query string %s: unknown parameter %s"
+msgstr "MultiBackend: neplatný řetězec dotazu %s: neznámý parametr %s"
+
+#: ../duplicity/backends/multibackend.py:149
+#: ../duplicity/backends/multibackend.py:154
+#, python-format
+msgid "MultiBackend: illegal value for %s: %s"
+msgstr "MultiBackend: neplatná hodnota pro %s: %s"
+
+#: ../duplicity/backends/multibackend.py:162
+#, python-format
+msgid "MultiBackend: Url %s"
+msgstr "MultiBackend: URL %s"
+
+#: ../duplicity/backends/multibackend.py:166
+#, python-format
+msgid "MultiBackend: Could not load config file %s: %s "
+msgstr "MultiBackend: Nedaří se načíst soubor s nastavením %s: %s "
+
+#: ../duplicity/backends/multibackend.py:175
+#, python-format
+msgid "MultiBackend: use store %s"
+msgstr "MultiBackend: použít uložení %s"
+
+#: ../duplicity/backends/multibackend.py:180
+#, python-format
+msgid "MultiBackend: set env %s = %s"
+msgstr "MultiBackend: nastavit proměnnou prostředí %s = %s"
+
+#: ../duplicity/backends/multibackend.py:206
+#, python-format
+msgid "MultiBackend: _put: write to store #%s (%s)"
+msgstr "MultiBackend: _put: zapsat do uložení č. %s (%s)"
+
+#: ../duplicity/backends/multibackend.py:219
+#, python-format
+msgid "MultiBackend: failed to write to store #%s (%s), try #%s, Exception: %s"
+msgstr ""
+"MultiBackend: nepodařilo se zapsat do uložení č. %s (%s), zkuste č. %s, "
+"výjimka: %s"
+
+#: ../duplicity/backends/multibackend.py:226
+#, python-format
+msgid "MultiBackend: failed to write %s. Aborting process."
+msgstr "MultiBackend: nezdařilo se zapsat do %s. Proces bude přerušen."
+
+#: ../duplicity/backends/multibackend.py:233
+#, python-format
+msgid ""
+"MultiBackend: failed to write %s. Tried all backing stores and none succeeded"
+msgstr ""
+"MultiBackend: nepodařilo se zapsat %s. Vyzkoušena všechny uložení a v žádném "
+"se neuspělo"
+
+#: ../duplicity/backends/multibackend.py:250
+#, python-format
+msgid "MultiBackend: failed to get %s to %s from %s"
+msgstr "MultiBackend: nepodařilo se získat %s do %s z %s"
+
+#: ../duplicity/backends/multibackend.py:253
+#, python-format
+msgid ""
+"MultiBackend: failed to get %s. Tried all backing stores and none succeeded"
+msgstr ""
+"MultiBackend: nepodařilo se získat %s. Vyzkoušena všechna úložiště a na "
+"žádném neuspělo"
+
+#: ../duplicity/backends/multibackend.py:262
+#, python-format
+msgid "MultiBackend: list from %s: %s"
+msgstr "MultiBackend: seznam z %s: %s"
+
+#: ../duplicity/backends/multibackend.py:268
+#, python-format
+msgid "MultiBackend: combined list: %s"
+msgstr "MultiBackend: kombinovaný seznam: %s"
+
+#: ../duplicity/backends/multibackend.py:290
+#, python-format
+msgid "MultiBackend: failed to delete %s from %s"
+msgstr "MultiBackend: nepodařilo se smazat %s z %s"
+
+#: ../duplicity/backends/multibackend.py:294
+#, python-format
+msgid ""
+"MultiBackend: failed to delete %s. Tried all backing stores and none "
+"succeeded"
+msgstr ""
+"MultiBackend: nepodařilo se smazat %s. Vyzkoušena všechna úložiště a na "
+"žádném se neuspělo"
+
+#: ../duplicity/backends/pydrivebackend.py:143
+#, python-format
+msgid "PyDrive backend: multiple files called '%s'."
+msgstr "Podpůrná vrstva PyDrive: vícero souborů nazvaných „%s“."
+
+#: ../duplicity/backends/webdavbackend.py:61
+msgid "Missing socket or ssl python modules."
+msgstr "Chybějící python moduly pro socket nebo ssl."
+
+#: ../duplicity/backends/webdavbackend.py:79
+#, python-format
+msgid "Cacert database file '%s' is not readable."
+msgstr "Soubor „%s“ s certifikáty cert. autorit není čitelný."
+
+#: ../duplicity/backends/webdavbackend.py:100
+msgid ""
+"Option '--ssl-cacert-path' is not supported with python 2.7.8 and below."
+msgstr "Volba „--ssl-cacert-path“ není podporovaná v python 2.7.8 a starších."
+
+#: ../duplicity/backends/webdavbackend.py:104
+#, python-format
+msgid ""
+"For certificate verification with python 2.7.8 or earlier a cacert database\n"
+"file is needed in one of these locations: %s\n"
+"Hints:\n"
+"  Consult the man page, chapter 'SSL Certificate Verification'.\n"
+"  Consider using the options --ssl-cacert-file, --ssl-no-check-certificate ."
+msgstr ""
+"Pro ověřování certifikátů s python 2.7.8 a staršími je třeba souboru\n"
+"s databází certifikátů cert. autorit v jednom z těchto umístění: %s\n"
+"Rady:\n"
+"  Konzultujte manuálovou stránku, kapitolu „Ověřování SSL certifikátů“.\n"
+"  Zvažte použití voleb --ssl-cacert-file, --ssl-no-check-certificate ."
+
+#: ../duplicity/backends/webdavbackend.py:150
+#, python-format
+msgid "Using WebDAV protocol %s"
+msgstr "Pomocí WebDAV protokolu %s"
+
+#: ../duplicity/backends/webdavbackend.py:151
+#, python-format
+msgid "Using WebDAV host %s port %s"
+msgstr "S použitím WebDAV hostitele %s, port %s"
+
+#: ../duplicity/backends/webdavbackend.py:153
+#, python-format
+msgid "Using WebDAV directory %s"
+msgstr "S použitím WebDAV složky %s"
+
+#: ../duplicity/backends/webdavbackend.py:184
+#, python-format
+msgid "WebDAV create connection on '%s'"
+msgstr "WebDAV vytvořit spojení na „%s“"
+
+#: ../duplicity/backends/webdavbackend.py:195
+#, python-format
+msgid "WebDAV Unknown URI scheme: %s"
+msgstr "WebDAV neznámé schéma URI: %s"
+
+#: ../duplicity/backends/webdavbackend.py:214
+#, python-format
+msgid "WebDAV %s %s request with headers: %s "
+msgstr "WebDAV %s %s požadavek s hlavičkami: %s "
+
+#: ../duplicity/backends/webdavbackend.py:215
+#: ../duplicity/backends/webdavbackend.py:238
+#, python-format
+msgid "WebDAV data length: %s "
+msgstr "WebDAV datový objem: %s "
+
+#: ../duplicity/backends/webdavbackend.py:218
+#, python-format
+msgid "WebDAV response status %s with reason '%s'."
+msgstr "Stav %s WebDAV odpovědi s důvodem „%s“."
+
+#: ../duplicity/backends/webdavbackend.py:224
+#, python-format
+msgid "WebDAV redirect to: %s "
+msgstr "WebDAV přeměrovat na: %s "
+
+#: ../duplicity/backends/webdavbackend.py:226
+msgid "WebDAV redirected 10 times. Giving up."
+msgstr "WebDAV přesměroval 10 krát. Dále už se zkoušet nebude."
+
+#: ../duplicity/backends/webdavbackend.py:231
+msgid "WebDAV missing location header in redirect response."
+msgstr "WebDAV chybí hlavička umístění v přesměrovávací odpovědi."
+
+#: ../duplicity/backends/webdavbackend.py:236
+msgid "WebDAV retry request with authentification headers."
+msgstr "WebDAV požadavek na opětovný pokus s ověřovacími hlavičkami."
+
+#: ../duplicity/backends/webdavbackend.py:237
+#, python-format
+msgid "WebDAV %s %s request2 with headers: %s "
+msgstr "WebDAV %s %s druhý požadavek s hlavičkami: %s "
+
+#: ../duplicity/backends/webdavbackend.py:241
+#, python-format
+msgid "WebDAV response2 status %s with reason '%s'."
+msgstr "WebDAV stav %s druhé odpovědi s důvodem „%s“."
+
+#: ../duplicity/backends/webdavbackend.py:258
+msgid ""
+"python-kerberos needed to use kerberos                           "
+"authorization, falling back to basic auth."
+msgstr ""
+"Pro použití kerberos ověřování je třeba python-kerberos, náhradně se použije "
+"ověření uživatelským jménem a heslem."
+
+#: ../duplicity/backends/webdavbackend.py:262
+#, python-format
+msgid ""
+"Kerberos authorization failed: %s.                          Falling back to "
+"basic auth."
+msgstr ""
+"Kerberos ověřování se nezdařilo: %s. Náhradně se bude ověřovat uživatelským "
+"jménem a heslem."
+
+#: ../duplicity/backends/webdavbackend.py:360
+#, python-format
+msgid "Creating missing directory %s"
+msgstr "Vytváření chybějící složky %s"
+
+#: ../duplicity/backends/webdavbackend.py:364
+#, python-format
+msgid "WebDAV MKCOL %s failed: %s %s"
+msgstr "WebDAV MKCOL %s se nezdařilo: %s %s"
+
+#: ../duplicity/backends/webdavbackend.py:377
+#, python-format
+msgid "WebDAV path decoding and translation: %s -> %s"
+msgstr "WebDAV dekódování a překlad popisu umístění: %s -> %s"
+
+#: ../duplicity/backends/webdavbackend.py:422
+#, python-format
+msgid "WebDAV GET Bad status code %s reason %s."
+msgstr "WebDAV GET chybný stavový kód %s důvod %s."
+
+#: ../duplicity/backends/webdavbackend.py:444
+#, python-format
+msgid "WebDAV PUT Bad status code %s reason %s."
+msgstr "WebDAV PUT chybný stavový kód %s důvod %s."
+
+#: ../duplicity/backends/webdavbackend.py:464
+#, python-format
+msgid "WebDAV DEL Bad status code %s reason %s."
+msgstr "WebDAV DEL chybný stavový kód %s důvod %s."
+
+#: ../duplicity/librsync.py:184
+msgid ""
+"basis_file must be a (true) file or an object whose file attribute is the "
+"underlying true file object"
+msgstr ""
+"je třeba, aby basis_file byl (skutečný) soubor nebo objekt, jehož souborový "
+"atribut je je skutečným souborovým objektem"
+>>>>>>> MERGE-SOURCE
 
 #: ../duplicity/manifest.py:91
 #, python-format
@@ -1657,6 +2379,7 @@
 "If this is not a mistake, use the --allow-source-mismatch switch to avoid "
 "seeing this message"
 msgstr ""
+<<<<<<< TREE
 "Přerušuje se protože byste si mohli nedopatřením pokusit zazálohovat dvě "
 "různé datové sady do stejného vzdáleného umístění nebo použít stejnou "
 "archivní složku. Pokud to není chyba, použijte přepínač --allow-source-"
@@ -1681,6 +2404,24 @@
 "souborů obsahuje %d"
 
 #: ../duplicity/manifest.py:213
+=======
+"Přerušuje se protože byste si mohli nedopatřením pokusit zazálohovat dvě "
+"různé datové sady do stejného vzdáleného umístění nebo použít stejnou "
+"archivní složku. Pokud to není chyba, použijte přepínač --allow-source-"
+"mismatch, aby se toto hlášení neobjevovalo."
+
+#: ../duplicity/manifest.py:192
+#, python-format
+msgid "Found manifest volume %s"
+msgstr "Nalezen svazek manifestu %s"
+
+#: ../duplicity/manifest.py:199
+#, python-format
+msgid "Found %s volumes in manifest"
+msgstr "Nalezeno %s svazků v manifestu"
+
+#: ../duplicity/manifest.py:213
+>>>>>>> MERGE-SOURCE
 msgid "Manifests not equal because different volume numbers"
 msgstr "Manifesty se neshodují kvůli rozdílným počtům svazků"
 
@@ -1877,4 +2618,26 @@
 #: ../duplicity/util.py:162
 #, python-format
 msgid "Releasing lockfile %s"
-msgstr "Uvolňování souboru zámku %s"
+<<<<<<< TREE
+msgstr "Uvolňování souboru zámku %s"
+=======
+msgstr "Uvolňování souboru zámku %s"
+
+#~ msgid "%s not found in archive, no files restored."
+#~ msgstr "%s v archivu nenalezen, žádné soubory nebyly obnoveny."
+
+#~ msgid "Total number of backup: %d"
+#~ msgstr "Celkový počet záloh: %d"
+
+#~ msgid "Type of file change:"
+#~ msgstr "Typ změny souboru:"
+
+#~ msgid "File: %s"
+#~ msgstr "Soubor: %s"
+
+#~ msgid ""
+#~ "Manifest file '%s' is corrupt: File count says %d, File list contains %d"
+#~ msgstr ""
+#~ "Soubor s manifestem „%s“ je poškozený: Počet souborů uvádí %d, seznam "
+#~ "souborů obsahuje %d"
+>>>>>>> MERGE-SOURCE

=== modified file 'po/de.po'
--- po/de.po	2018-02-25 05:44:50 +0000
+++ po/de.po	2019-05-20 08:57:58 +0000
@@ -6,17 +6,30 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: duplicity\n"
+<<<<<<< TREE
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2018-02-24 06:05+0000\n"
 "PO-Revision-Date: 2018-02-23 13:10+0000\n"
 "Last-Translator: Tobias Bannert <Unknown>\n"
+=======
+"Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
+"POT-Creation-Date: 2018-08-21 10:58-0500\n"
+"PO-Revision-Date: 2017-10-16 21:07+0000\n"
+"Last-Translator: Martin Weil <Unknown>\n"
+>>>>>>> MERGE-SOURCE
 "Language-Team: German <de@xxxxxx>\n"
+"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
 "X-Launchpad-Export-Date: 2018-02-25 05:44+0000\n"
 "X-Generator: Launchpad (build 18561)\n"
+=======
+"X-Launchpad-Export-Date: 2018-08-12 04:35+0000\n"
+"X-Generator: Launchpad (build 18747)\n"
+>>>>>>> MERGE-SOURCE
 
 #: ../bin/duplicity:133
 msgid "Reuse configured PASSPHRASE as SIGN_PASSPHRASE"
@@ -78,12 +91,25 @@
 "Datei %s fehlt im Sicherungssatz.\n"
 "Beim Neustart wird fortgefahren mit Datei %s."
 
+<<<<<<< TREE
 #: ../bin/duplicity:331
+=======
+#: ../bin/duplicity:336
+#, python-format
+msgid "Remote filesize %d for %s does not match local size %d, retrying."
+msgstr ""
+
+#: ../bin/duplicity:343
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s was corrupted during upload."
 msgstr "Datei %s wurde während des Hochladens beschädigt."
 
+<<<<<<< TREE
 #: ../bin/duplicity:364
+=======
+#: ../bin/duplicity:376
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Restarting backup, but current encryption settings do not match original "
 "settings"
@@ -92,17 +118,29 @@
 "Verschlüsselungseinstellungen entsprechen jedoch nicht den ursprünglichen "
 "Einstellungen"
 
+<<<<<<< TREE
 #: ../bin/duplicity:387
+=======
+#: ../bin/duplicity:399
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Restarting after volume %s, file %s, block %s"
 msgstr "Neustart nach Datenträger %s, Datei %s, Block %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:457
+=======
+#: ../bin/duplicity:469
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d"
 msgstr "Datenträger %d wurde verarbeitet"
 
+<<<<<<< TREE
 #: ../bin/duplicity:606
+=======
+#: ../bin/duplicity:618
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Fatal Error: Unable to start incremental backup.  Old signatures not found "
 "and incremental specified"
@@ -110,100 +148,176 @@
 "Schwerwiegender Fehler: schrittweise Sicherung konnte nicht gestartet "
 "werden. Alte Signaturen nicht gefunden und schrittweise Sicherung ausgewählt."
 
+<<<<<<< TREE
 #: ../bin/duplicity:610
+=======
+#: ../bin/duplicity:622
+>>>>>>> MERGE-SOURCE
 msgid "No signatures found, switching to full backup."
 msgstr "Keine Signaturen gefunden, vollständige Sicherung wird durchgeführt."
 
+<<<<<<< TREE
 #: ../bin/duplicity:624
+=======
+#: ../bin/duplicity:636
+>>>>>>> MERGE-SOURCE
 msgid "Backup Statistics"
 msgstr "Sicherungsstatistiken"
 
+<<<<<<< TREE
 #: ../bin/duplicity:730
+=======
+#: ../bin/duplicity:742
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%s not found in archive - no files restored."
 msgstr "%s wurde nicht im Archiv gefunden - keine Dateien wiederhergestellt."
 
+<<<<<<< TREE
 #: ../bin/duplicity:734
+=======
+#: ../bin/duplicity:746
+>>>>>>> MERGE-SOURCE
 msgid "No files found in archive - nothing restored."
 msgstr "Keine Dateien im Archiv - nichts wiederhergestellt."
 
+<<<<<<< TREE
 #: ../bin/duplicity:767
+=======
+#: ../bin/duplicity:779
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d of %d"
 msgstr "Datenträger %d von %d wurde verarbeitet"
 
+<<<<<<< TREE
 #: ../bin/duplicity:801
+=======
+#: ../bin/duplicity:813
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Invalid data - %s hash mismatch for file:"
 msgstr "Ungültige Daten – %s-Hash stimmt nicht für die Datei:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:804
+=======
+#: ../bin/duplicity:816
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Calculated hash: %s"
 msgstr "Erstellter Hash: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:805
+=======
+#: ../bin/duplicity:817
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Manifest hash: %s"
 msgstr "Manifest-Hashcode: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:848
+=======
+#: ../bin/duplicity:860
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Volume was signed by key %s, not %s"
 msgstr "Datenträger wurde von Schlüssel %s, anstatt von %s unterschrieben"
 
+<<<<<<< TREE
 #: ../bin/duplicity:880
+=======
+#: ../bin/duplicity:892
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Verify complete: %s, %s."
 msgstr "Überprüfung vollständig: %s, %s."
 
+<<<<<<< TREE
 #: ../bin/duplicity:881
+=======
+#: ../bin/duplicity:893
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d file compared"
 msgid_plural "%d files compared"
 msgstr[0] "%d Datei verglichen"
 msgstr[1] "%d Dateien verglichen"
 
+<<<<<<< TREE
 #: ../bin/duplicity:883
+=======
+#: ../bin/duplicity:895
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d difference found"
 msgid_plural "%d differences found"
 msgstr[0] "%d Unterschied gefunden"
 msgstr[1] "%d Unterschiede gefunden"
 
+<<<<<<< TREE
 #: ../bin/duplicity:902
+=======
+#: ../bin/duplicity:914
+>>>>>>> MERGE-SOURCE
 msgid "No extraneous files found, nothing deleted in cleanup."
 msgstr "Keine überflüssigen Dateien gefunden, es wurde nichts gelöscht."
 
+<<<<<<< TREE
 #: ../bin/duplicity:907
+=======
+#: ../bin/duplicity:919
+>>>>>>> MERGE-SOURCE
 msgid "Deleting this file from backend:"
 msgid_plural "Deleting these files from backend:"
 msgstr[0] "Diese Datei wird vom Hintergrundprogramm gelöscht:"
 msgstr[1] "Diese Dateien wird vom Hintergrundprogramm gelöscht:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:918
+=======
+#: ../bin/duplicity:930
+>>>>>>> MERGE-SOURCE
 msgid "Found the following file to delete:"
 msgid_plural "Found the following files to delete:"
 msgstr[0] "Folgende Datei zum Löschen gefunden:"
 msgstr[1] "Folgende Dateien zum Löschen gefunden:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:921
+=======
+#: ../bin/duplicity:933
+>>>>>>> MERGE-SOURCE
 msgid "Run duplicity again with the --force option to actually delete."
 msgstr ""
 "Bitte duplicity noch einmal mit der »--force«-Option ausführen, um "
 "tatsächlich zu löschen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:964
+=======
+#: ../bin/duplicity:976
+>>>>>>> MERGE-SOURCE
 msgid "There are backup set(s) at time(s):"
 msgstr "Es bestehen Sicherungssätze zu folgenden Zeitpunkten:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:966
+=======
+#: ../bin/duplicity:978
+>>>>>>> MERGE-SOURCE
 msgid "Which can't be deleted because newer sets depend on them."
 msgstr ""
 "Welche nicht gelöscht werden können, weil neuere Sicherungssätze davon "
 "abhängen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:970
+=======
+#: ../bin/duplicity:982
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Current active backup chain is older than specified time.  However, it will "
 "not be deleted.  To remove all your backups, manually purge the repository."
@@ -212,16 +326,25 @@
 "wird nicht gelöscht. Um alle Sicherungen zu entfernen, bitte die Paketquelle "
 "manuell löschen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:983
+=======
+#: ../bin/duplicity:995
+>>>>>>> MERGE-SOURCE
 msgid "No old backup sets found, nothing deleted."
 msgstr "Keine alten Sicherungssätze gefunden, nichts gelöscht."
 
+<<<<<<< TREE
 #: ../bin/duplicity:986
+=======
+#: ../bin/duplicity:998
+>>>>>>> MERGE-SOURCE
 msgid "Deleting backup chain at time:"
 msgid_plural "Deleting backup chains at times:"
 msgstr[0] "Sicherungskette dieses Zeitpunkts wird gelöscht:"
 msgstr[1] "Sicherungskette dieser Zeitpunkte wird gelöscht:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:998
 #, python-format
 msgid "Deleting any incremental signature chain rooted at %s"
@@ -235,27 +358,54 @@
 "Jede schrittweise Sicherungskette die bei %s verankert ist wird gelöscht"
 
 #: ../bin/duplicity:1003
+=======
+#: ../bin/duplicity:1010
+#, python-format
+msgid "Deleting any incremental signature chain rooted at %s"
+msgstr "Jede schrittweise Signaturkette die bei %s verankert ist wird gelöscht"
+
+#: ../bin/duplicity:1012
+#, python-format
+msgid "Deleting any incremental backup chain rooted at %s"
+msgstr ""
+"Jede schrittweise Sicherungskette die bei %s verankert ist wird gelöscht"
+
+#: ../bin/duplicity:1015
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete signature chain %s"
 msgstr "Vollständige Signaturkette wird gelöscht: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1005
+=======
+#: ../bin/duplicity:1017
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete backup chain %s"
 msgstr "Vollständige Sicherungskette wird gelöscht: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1011
+=======
+#: ../bin/duplicity:1023
+>>>>>>> MERGE-SOURCE
 msgid "Found old backup chain at the following time:"
 msgid_plural "Found old backup chains at the following times:"
 msgstr[0] "Alte Sicherungskette zu folgendem Zeitpunkt gefunden:"
 msgstr[1] "Alte Sicherungeketten zu folgenden Zeitpunkten gefunden:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1015
+=======
+#: ../bin/duplicity:1027
+>>>>>>> MERGE-SOURCE
 msgid "Rerun command with --force option to actually delete."
 msgstr ""
 "Bitte Befehl erneut mit »--force«-Option ausführen, um tatsächlich zu "
 "löschen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1028
 msgid "No old backup sets found."
 msgstr ""
@@ -276,68 +426,119 @@
 msgstr ""
 
 #: ../bin/duplicity:1092
+=======
+#: ../bin/duplicity:1104
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting local %s (not authoritative at backend)."
 msgstr "Lokal %s wird gelöscht (keine Auswirkungen am Hintergrundprogramm)."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1097
+=======
+#: ../bin/duplicity:1109
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Unable to delete %s: %s"
 msgstr "%s kann nicht gelöscht werden: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1128 ../duplicity/dup_temp.py:266
+=======
+#: ../bin/duplicity:1140 ../duplicity/dup_temp.py:266
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Failed to read %s: %s"
 msgstr "%s konnte nicht gelesen werden: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1142
+=======
+#: ../bin/duplicity:1154
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Copying %s to local cache."
 msgstr "%s wird zum lokalen Puffer kopiert."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1190
+=======
+#: ../bin/duplicity:1202
+>>>>>>> MERGE-SOURCE
 msgid "Local and Remote metadata are synchronized, no sync needed."
 msgstr ""
 "Lokale und entfernte Metadaten sind bereits synchron, kein Abgleich benötigt."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1195
+=======
+#: ../bin/duplicity:1207
+>>>>>>> MERGE-SOURCE
 msgid "Synchronizing remote metadata to local cache..."
 msgstr "Entfernte Metadaten werden zum lokalen Puffer synchronisiert …"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1207
+=======
+#: ../bin/duplicity:1219
+>>>>>>> MERGE-SOURCE
 msgid "Sync would copy the following from remote to local:"
 msgstr ""
 "Synchronisation würde die folgenden Daten vom entfernten Rechner hierher "
 "kopieren:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1210
+=======
+#: ../bin/duplicity:1222
+>>>>>>> MERGE-SOURCE
 msgid "Sync would remove the following spurious local files:"
 msgstr ""
 "Synchronisation würde die folgenden überflüssigen lokalen Dateien entfernen:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1253
+=======
+#: ../bin/duplicity:1265
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get free space on temp."
 msgstr "Der temporäre Speicherplatz ist belegt."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1261
+=======
+#: ../bin/duplicity:1273
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp space has %d available, backup needs approx %d."
 msgstr ""
 "%d temporärer Speicherplatz ist verfügbar, die Sicherung benötigt ungefähr "
 "%d."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1264
+=======
+#: ../bin/duplicity:1276
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp has %d available, backup will use approx %d."
 msgstr ""
 "%d temporärer Speicherplatz ist verfügbar, die Sicherung wird ungefähr %d "
 "nutzen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1272
+=======
+#: ../bin/duplicity:1284
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get max open files."
 msgstr "Der Höchstwert für offene Dateien konnte nicht festgestellt werden."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1276
+=======
+#: ../bin/duplicity:1288
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Max open files of %s is too low, should be >= 1024.\n"
@@ -347,7 +548,11 @@
 "sein.\n"
 "Bitte »ulimit -n 1024« ausführen, um dieses zu berichtigen.\n"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1327
+=======
+#: ../bin/duplicity:1339
+>>>>>>> MERGE-SOURCE
 msgid ""
 "RESTART: The first volume failed to upload before termination.\n"
 "         Restart is impossible...starting backup from beginning."
@@ -355,7 +560,11 @@
 "NEUSTART: Das Hochladen des ersten Datenträgers ist fehlgeschlagen.\n"
 "         Neustart nicht möglich, Sicherung wird vom Anfang wiederaufgenommen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1333
+=======
+#: ../bin/duplicity:1345
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Volumes %d to %d failed to upload before termination.\n"
@@ -364,7 +573,11 @@
 "NEUSTART: Das Hochladen der Datenträger %d bis %d ist fehlgeschlagen.\n"
 "        Sicherung wird mit Datenträger %d wiederaufgenommen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1340
+=======
+#: ../bin/duplicity:1352
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n"
@@ -377,7 +590,11 @@
 "        Neustart nicht möglich … duplicity wird die letzte unvollständige\n"
 "        Sicherung entfernen und von vorn anfangen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1361
+=======
+#: ../bin/duplicity:1373
+>>>>>>> MERGE-SOURCE
 msgid ""
 "\n"
 "PYTHONOPTIMIZE in the environment causes duplicity to fail to\n"
@@ -394,40 +611,71 @@
 "\n"
 "Siehe https://bugs.launchpad.net/duplicity/+bug/931175\n";
 
+<<<<<<< TREE
 #: ../bin/duplicity:1384
 #, python-format
 msgid "Acquiring lockfile %s"
 msgstr "Die Sperrdatei %s wird erfasst"
+=======
+#: ../bin/duplicity:1396
+#, python-format
+msgid "Acquiring lockfile %s"
+msgstr "Die Sperrdatei %s wird erfasst"
+>>>>>>> MERGE-SOURCE
 
+<<<<<<< TREE
 #: ../bin/duplicity:1442
+=======
+#: ../bin/duplicity:1454
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Last %s backup left a partial set, restarting."
 msgstr ""
 "Das letzte %s-Sicherung hinterließ einen Teil eines Sicherungssatzes, "
 "Neustart wird durchgeführt."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1446
+=======
+#: ../bin/duplicity:1458
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Cleaning up previous partial %s backup set, restarting."
 msgstr ""
 "Der letzte unvollständige %s-Sicherungssatz wird entfernt, Neustart wird "
 "durchgeführt."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1458
+=======
+#: ../bin/duplicity:1470
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date:"
 msgstr "Letzte vollständige Sicherung:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1460
+=======
+#: ../bin/duplicity:1472
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date: none"
 msgstr "Letzte vollständige Sicherung: Keine"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1462
+=======
+#: ../bin/duplicity:1474
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup is too old, forcing full backup"
 msgstr ""
 "Letzte vollständige Sicherung ist zu alt, vollständige Sicherung wird "
 "erzwungen"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1506
+=======
+#: ../bin/duplicity:1518
+>>>>>>> MERGE-SOURCE
 msgid ""
 "When using symmetric encryption, the signing passphrase must equal the "
 "encryption passphrase."
@@ -435,21 +683,37 @@
 "Bei symmetrischer Verschlüsselung müssen die Passphrasen für Signatur und "
 "Verschlüsselung übereinstimmen."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1575
+=======
+#: ../bin/duplicity:1587
+>>>>>>> MERGE-SOURCE
 msgid "INT intercepted...exiting."
 msgstr "INT abgefangen … wird beendet."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1583
+=======
+#: ../bin/duplicity:1595
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "GPG error detail: %s"
 msgstr "GPG-Fehlerdetail: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1593
+=======
+#: ../bin/duplicity:1605
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "User error detail: %s"
 msgstr "Benutzerfehlerdetail: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1603
+=======
+#: ../bin/duplicity:1615
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Backend error detail: %s"
 msgstr "Fehlerdetail des Hintergrundprogramms: %s"
@@ -562,6 +826,7 @@
 "entfernt.\n"
 "Bitte verwenden Sie Standarddateinamen."
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:78
 #, python-format
 msgid ""
@@ -592,6 +857,38 @@
 "Ersatz verwendet werden."
 
 #. TRANSL: Used in usage help to represent a Unix-style path name. Example:
+=======
+#: ../duplicity/commandline.py:78
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"--include-filelist and --exclude-filelist now accept globbing characters and "
+"should be used instead."
+msgstr ""
+"Achtung: Option %s ist überflüssig und wird in einer zukünftigen "
+"Veröffentlichung entfernt werden.\n"
+"--include-filelist und --exclude-filelist erlauben jetzt Platzhalter und "
+"sollten stattdessen verwendet werden."
+
+#: ../duplicity/commandline.py:88
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"On many GNU/Linux systems, stdin is represented by /dev/stdin and\n"
+"--include-filelist=/dev/stdin or --exclude-filelist=/dev/stdin could\n"
+"be used as a substitute."
+msgstr ""
+"Achtung: Option %s ist überflüssig und wird in einer zukünftigen "
+"Veröffentlichung entfernt werden.\n"
+"Auf vielen GNU/Linuxsystemen wird die Standardeingabe durch »/dev/stdin« "
+"dargestellt und\n"
+"--include-filelist=/dev/stdin oder --exclude-filelist=/dev/stdin könnte als "
+"Ersatz verwendet werden."
+
+#. Used in usage help to represent a Unix-style path name. Example:
+>>>>>>> MERGE-SOURCE
 #. --archive-dir <path>
 #: ../duplicity/commandline.py:280 ../duplicity/commandline.py:290
 #: ../duplicity/commandline.py:311 ../duplicity/commandline.py:385
@@ -630,8 +927,13 @@
 msgid "filename"
 msgstr "Dateiname"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent a regular expression (regexp).
 #: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+=======
+#. Used in usage help to represent a regular expression (regexp).
+#: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+>>>>>>> MERGE-SOURCE
 msgid "regular_expression"
 msgstr "regulärer Ausdruck"
 
@@ -661,8 +963,13 @@
 "»Fehler vernachlässigen«-Modus läuft gerade, aufgrund von %s; bitte "
 "überprüfen wenn das nicht beabsichtigt war"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent an imap mailbox
 #: ../duplicity/commandline.py:432
+=======
+#. Used in usage help to represent an imap mailbox
+#: ../duplicity/commandline.py:432
+>>>>>>> MERGE-SOURCE
 msgid "imap_mailbox"
 msgstr "IMAP-Postfach"
 
@@ -681,11 +988,17 @@
 msgid "number"
 msgstr "Zahl"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help (noun)
 #: ../duplicity/commandline.py:464
+=======
+#. Used in usage help (noun)
+#: ../duplicity/commandline.py:464
+>>>>>>> MERGE-SOURCE
 msgid "backup name"
 msgstr "Sicherungsname"
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:567
 msgid "policy"
 msgstr ""
@@ -693,6 +1006,11 @@
 #. TRANSL: noun
 #: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
 #: ../duplicity/commandline.py:768
+=======
+#. noun
+#: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
+#: ../duplicity/commandline.py:768
+>>>>>>> MERGE-SOURCE
 msgid "command"
 msgstr "Befehl"
 
@@ -704,6 +1022,7 @@
 msgid "pem formatted bundle of certificate authorities"
 msgstr "PEM-formatiertes Paket von Zertifizierungsstellen"
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:591
 msgid "path to a folder with certificate authority files"
 msgstr ""
@@ -716,11 +1035,30 @@
 #. --timeout <seconds>
 #: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
 #: ../duplicity/commandline.py:831
+=======
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr "Pfad zu einem Verzeichnis mit Dateien der Zertifizierungsstellen"
+
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#. Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+>>>>>>> MERGE-SOURCE
 msgid "seconds"
 msgstr "Sekunden"
 
+<<<<<<< TREE
 #. TRANSL: abbreviation for "character" (noun)
 #: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+=======
+#. abbreviation for "character" (noun)
+#: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+>>>>>>> MERGE-SOURCE
 msgid "char"
 msgstr "Zeichen"
 
@@ -769,13 +1107,23 @@
 msgid "container_name"
 msgstr "Containername"
 
+<<<<<<< TREE
 #. TRANSL: noun
 #: ../duplicity/commandline.py:776
+=======
+#. noun
+#: ../duplicity/commandline.py:776
+>>>>>>> MERGE-SOURCE
 msgid "count"
 msgstr "Anzahl"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent the name of a file directory
 #: ../duplicity/commandline.py:779
+=======
+#. Used in usage help to represent the name of a file directory
+#: ../duplicity/commandline.py:779
+>>>>>>> MERGE-SOURCE
 msgid "directory"
 msgstr "Verzeichnis"
 
@@ -859,6 +1207,7 @@
 #. ftp://user[:password]@other.host[:port]/some_dir
 #: ../duplicity/commandline.py:874
 msgid "user"
+<<<<<<< TREE
 msgstr "Benutzer"
 
 #. TRANSL: account id for b2. Example: b2://account_id@bucket/
@@ -874,18 +1223,39 @@
 
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:899
+=======
+msgstr "Benutzer"
+
+#. account id for b2. Example: b2://account_id@bucket/
+#: ../duplicity/commandline.py:877
+msgid "account_id"
+msgstr "Kontokennung"
+
+#. application_key for b2.
+#. Example: b2://account_id:application_key@bucket/
+#: ../duplicity/commandline.py:881
+msgid "application_key"
+msgstr "Anwendungsschlüssel"
+
+#. Header in usage help
+#: ../duplicity/commandline.py:899
+>>>>>>> MERGE-SOURCE
 msgid "Backends and their URL formats:"
 msgstr "Hintergrundprogramme und deren Adressformate:"
 
+<<<<<<< TREE
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:930
+=======
+#. Header in usage help
+#: ../duplicity/commandline.py:930
+>>>>>>> MERGE-SOURCE
 msgid "Commands:"
 msgstr "Befehle:"
 
 #: ../duplicity/commandline.py:954
 #, python-format
-msgid ""
-"Specified archive directory '%s' does not exist, or is not a directory"
+msgid "Specified archive directory '%s' does not exist, or is not a directory"
 msgstr ""
 "Das angegebene Archivverzeichnis »%s« besteht nicht oder ist kein Verzeichnis"
 
@@ -931,12 +1301,21 @@
 "Die Optionen --exclude/--include funktionieren\n"
 "im Moment nur bei der Sicherung, nicht bei der Wiederherstellung."
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1101
 #, python-format
 msgid "GPG binary is %s, version %s"
 msgstr ""
 
 #: ../duplicity/commandline.py:1129
+=======
+#: ../duplicity/commandline.py:1101
+#, python-format
+msgid "GPG binary is %s, version %s"
+msgstr "Die GPG Programmdatei ist %s, Version %s"
+
+#: ../duplicity/commandline.py:1129
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Bad URL '%s'.\n"
@@ -1070,22 +1449,41 @@
 msgstr ""
 "Kritischer Fehler: Weder das entfernte noch das lokale Manifest ist lesbar."
 
-#: ../duplicity/collections.py:225
-#, python-format
-msgid "Processing local manifest %s (%s)"
-msgstr ""
-
-#: ../duplicity/collections.py:237
-#, python-format
-msgid "Error processing remote manifest (%s): %s"
-msgstr ""
-
-#: ../duplicity/collections.py:240
-#, python-format
-msgid "Processing remote manifest %s (%s)"
-msgstr ""
-
-#: ../duplicity/collections.py:323
+<<<<<<< TREE
+#: ../duplicity/collections.py:225
+#, python-format
+msgid "Processing local manifest %s (%s)"
+msgstr ""
+
+#: ../duplicity/collections.py:237
+#, python-format
+msgid "Error processing remote manifest (%s): %s"
+msgstr ""
+
+#: ../duplicity/collections.py:240
+#, python-format
+msgid "Processing remote manifest %s (%s)"
+msgstr ""
+
+#: ../duplicity/collections.py:323
+=======
+#: ../duplicity/collections.py:225
+#, python-format
+msgid "Processing local manifest %s (%s)"
+msgstr "Verarbeitung des lokalen Manifest %s (%s)"
+
+#: ../duplicity/collections.py:237
+#, python-format
+msgid "Error processing remote manifest (%s): %s"
+msgstr "Fehler beim Verarbeiten des entfernten Manifest (%s): %s"
+
+#: ../duplicity/collections.py:240
+#, python-format
+msgid "Processing remote manifest %s (%s)"
+msgstr "Verarbeitung des entfernten Manifest %s (%s)"
+
+#: ../duplicity/collections.py:323
+>>>>>>> MERGE-SOURCE
 msgid "Preferring Backupset over previous one!"
 msgstr "Sicherungssatz wird dem Vorherigen vorgezogen!"
 
@@ -1200,6 +1598,7 @@
 msgstr[0] "und %d unvollständigen Sicherungssatz."
 msgstr[1] "und %d unvollständige Sicherungssätze."
 
+<<<<<<< TREE
 #. TRANSL: "cleanup" is a hard-coded command, so do not translate it
 #: ../duplicity/collections.py:666
 msgid ""
@@ -1209,6 +1608,16 @@
 "starten."
 
 #: ../duplicity/collections.py:669
+=======
+#. "cleanup" is a hard-coded command, so do not translate it
+#: ../duplicity/collections.py:666
+msgid "These may be deleted by running duplicity with the \"cleanup\" command."
+msgstr ""
+"Sie können diese entfernen, indem Sie duplicity mit dem »cleanup«-Befehl "
+"starten."
+
+#: ../duplicity/collections.py:669
+>>>>>>> MERGE-SOURCE
 msgid "No orphaned or incomplete backup sets found."
 msgstr "Keine verwaisten oder unvollständigen Sicherungssätze gefunden."
 
@@ -1226,9 +1635,14 @@
 msgstr[0] "%d Datei besteht im Puffer"
 msgstr[1] "%d Dateien besteht im Puffer"
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:748
 msgid ""
 "Warning, discarding last backup set, because of missing signature file."
+=======
+#: ../duplicity/collections.py:748
+msgid "Warning, discarding last backup set, because of missing signature file."
+>>>>>>> MERGE-SOURCE
 msgstr ""
 "Achtung, der letzte Sicherungssatz wird verworfen, weil die Signaturdatei "
 "fehlt."
@@ -1314,6 +1728,7 @@
 "No signature chain for the requested time. Using oldest available chain, "
 "starting at time %s."
 msgstr ""
+<<<<<<< TREE
 
 #: ../duplicity/collections.py:1235
 #, python-format
@@ -1328,6 +1743,10 @@
 #: ../duplicity/collections.py:1237
 msgid "Type of file change:"
 msgstr "Art der Dateiänderung:"
+=======
+"Keine Signaturkette für die angeforderte Zeit. Nutze die älteste verfügbare "
+"Kette, starte bei der Zeit %s."
+>>>>>>> MERGE-SOURCE
 
 #: ../duplicity/robust.py:61
 #, python-format
@@ -1384,6 +1803,7 @@
 msgid "Connection failed, please check your password: %s"
 msgstr "Verbindung fehlgeschlagen, bitte Passwort prüfen: %s"
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:85
 #, python-format
 msgid "MultiBackend: Could not parse query string %s: %s "
@@ -1646,6 +2066,276 @@
 "basis_file must be a (true) file or an object whose file attribute is the "
 "underlying true file object"
 msgstr ""
+=======
+#: ../duplicity/backends/multibackend.py:85
+#, python-format
+msgid "MultiBackend: Could not parse query string %s: %s "
+msgstr "MultiBackend: Konnte den angefragten String %s nicht auswerten: %s "
+
+#: ../duplicity/backends/multibackend.py:94
+#, python-format
+msgid "MultiBackend: Invalid query string %s: more than one value for %s"
+msgstr ""
+"MultiBackend: angefragter String %s ist nicht gültig: mehr als einen Wert "
+"für %s"
+
+#: ../duplicity/backends/multibackend.py:99
+#, python-format
+msgid "MultiBackend: Invalid query string %s: unknown parameter %s"
+msgstr ""
+"MultiBackend: angefragter String %s ist nicht gültig: unbekannter Parameter "
+"%s"
+
+#: ../duplicity/backends/multibackend.py:149
+#: ../duplicity/backends/multibackend.py:154
+#, python-format
+msgid "MultiBackend: illegal value for %s: %s"
+msgstr "MultiBackend: nicht erlaubter Wert für %s: %s"
+
+#: ../duplicity/backends/multibackend.py:162
+#, python-format
+msgid "MultiBackend: Url %s"
+msgstr "MehrfachHintergrundprogramm: Adresse %s"
+
+#: ../duplicity/backends/multibackend.py:166
+#, python-format
+msgid "MultiBackend: Could not load config file %s: %s "
+msgstr ""
+"MehrfachHintergrundprogramm: Konfigurationsdatei konnte nicht geladen werden "
+"%s: %s "
+
+#: ../duplicity/backends/multibackend.py:175
+#, python-format
+msgid "MultiBackend: use store %s"
+msgstr "MehrfachHintergrundprogramm: Speicher %s benutzen"
+
+#: ../duplicity/backends/multibackend.py:180
+#, python-format
+msgid "MultiBackend: set env %s = %s"
+msgstr "MehrfachHintergrundprogramm: env %s = %s einstellen"
+
+#: ../duplicity/backends/multibackend.py:206
+#, python-format
+msgid "MultiBackend: _put: write to store #%s (%s)"
+msgstr "MehrfachHintergrundprogramm: _put: Zum Speicher schreiben #%s (%s)"
+
+#: ../duplicity/backends/multibackend.py:219
+#, python-format
+msgid "MultiBackend: failed to write to store #%s (%s), try #%s, Exception: %s"
+msgstr ""
+"MehrfachHintergrundprogramm: Es konnte nicht zum Speicher geschrieben werden "
+"#%s (%s), bitte #%s versuchen, Ausnahmefall: %s"
+
+#: ../duplicity/backends/multibackend.py:226
+#, python-format
+msgid "MultiBackend: failed to write %s. Aborting process."
+msgstr ""
+"MehrfachHintergrundprogramm: Schreiben von %s ist fehlgeschlagen. Vorgang "
+"wird abgebrochen."
+
+#: ../duplicity/backends/multibackend.py:233
+#, python-format
+msgid ""
+"MultiBackend: failed to write %s. Tried all backing stores and none succeeded"
+msgstr ""
+"MehrfachHintergrundprogramm: %s konnte nicht geschrieben werden. Es wurden "
+"alle Hintergrundspeicher versucht, aber ohne Erfolg"
+
+#: ../duplicity/backends/multibackend.py:250
+#, python-format
+msgid "MultiBackend: failed to get %s to %s from %s"
+msgstr "MehrfachHintergrundprogramm: %s konnte nicht zu %s von %s gelangen"
+
+#: ../duplicity/backends/multibackend.py:253
+#, python-format
+msgid ""
+"MultiBackend: failed to get %s. Tried all backing stores and none succeeded"
+msgstr ""
+"MehrfachHintergrundprogramm: %s konnte nicht erhalten werden. Es wurden alle "
+"Hintergrundspeicher versucht, aber ohne Erfolg"
+
+#: ../duplicity/backends/multibackend.py:262
+#, python-format
+msgid "MultiBackend: list from %s: %s"
+msgstr "MehrfachHintergrundprogramm: Liste von %s: %s"
+
+#: ../duplicity/backends/multibackend.py:268
+#, python-format
+msgid "MultiBackend: combined list: %s"
+msgstr "MehrfachHintergrundprogramm: kombinierte Liste: %s"
+
+#: ../duplicity/backends/multibackend.py:290
+#, python-format
+msgid "MultiBackend: failed to delete %s from %s"
+msgstr "MehrfachHintergrundprogramm: %s konnte nicht von %s gelöscht werden"
+
+#: ../duplicity/backends/multibackend.py:294
+#, python-format
+msgid ""
+"MultiBackend: failed to delete %s. Tried all backing stores and none "
+"succeeded"
+msgstr ""
+"MehrfachHintergrundprogramm: %s konnte nicht gelöscht werden. Es wurden alle "
+"Hintergrundspeicher versucht, aber ohne Erfolg"
+
+#: ../duplicity/backends/pydrivebackend.py:143
+#, python-format
+msgid "PyDrive backend: multiple files called '%s'."
+msgstr "PyDrive-Hintergrundprogramm: mehrere Dateien aufgerufen »%s«."
+
+#: ../duplicity/backends/webdavbackend.py:61
+msgid "Missing socket or ssl python modules."
+msgstr "Es fehlt ein Socket oder ein SSL Python Modul."
+
+#: ../duplicity/backends/webdavbackend.py:79
+#, python-format
+msgid "Cacert database file '%s' is not readable."
+msgstr "Die Cacert Datenbankdatei '%s' ist nicht lesbar."
+
+#: ../duplicity/backends/webdavbackend.py:100
+msgid ""
+"Option '--ssl-cacert-path' is not supported with python 2.7.8 and below."
+msgstr ""
+"Die Option '--ssl-cacert-path' wird von Python 2.7.8 oder früher nicht "
+"unterstützt."
+
+#: ../duplicity/backends/webdavbackend.py:104
+#, python-format
+msgid ""
+"For certificate verification with python 2.7.8 or earlier a cacert database\n"
+"file is needed in one of these locations: %s\n"
+"Hints:\n"
+"  Consult the man page, chapter 'SSL Certificate Verification'.\n"
+"  Consider using the options --ssl-cacert-file, --ssl-no-check-certificate ."
+msgstr ""
+"Für zertifizierte Verifikation mit Phyton 2.7.8 oder früher ist eine Cacert "
+"Datenbankdatei\n"
+"an einer dieser Stellen notwendig: %s\n"
+"Hinweise:\n"
+"  Lesen Sie die Hilfeseiten, im Kapitel  'SSL Certificate Verification'.\n"
+"  Prüfen Sie die Optionen --ssl-cacert-file, --ssl-no-check-certificate ."
+
+#: ../duplicity/backends/webdavbackend.py:150
+#, python-format
+msgid "Using WebDAV protocol %s"
+msgstr "WebDAV-Protokol %s wird verwendet"
+
+#: ../duplicity/backends/webdavbackend.py:151
+#, python-format
+msgid "Using WebDAV host %s port %s"
+msgstr "WebDAV-Rechner %s Anschluss (Port) %s wird verwendet"
+
+#: ../duplicity/backends/webdavbackend.py:153
+#, python-format
+msgid "Using WebDAV directory %s"
+msgstr "WebDAV-Verzeichnis %s wird verwendet"
+
+#: ../duplicity/backends/webdavbackend.py:184
+#, python-format
+msgid "WebDAV create connection on '%s'"
+msgstr "WebDAV erzeugt eine Verbindung unter '%s'"
+
+#: ../duplicity/backends/webdavbackend.py:195
+#, python-format
+msgid "WebDAV Unknown URI scheme: %s"
+msgstr "WebDAV unbekanntes URI Schema: %s"
+
+#: ../duplicity/backends/webdavbackend.py:214
+#, python-format
+msgid "WebDAV %s %s request with headers: %s "
+msgstr "WebDAV %s %s Anfrage mit Headern: %s "
+
+#: ../duplicity/backends/webdavbackend.py:215
+#: ../duplicity/backends/webdavbackend.py:238
+#, python-format
+msgid "WebDAV data length: %s "
+msgstr "WebDAV Datenlänge: %s "
+
+#: ../duplicity/backends/webdavbackend.py:218
+#, python-format
+msgid "WebDAV response status %s with reason '%s'."
+msgstr "WebDAV Antwortstatus %s mit dem Grund '%s'."
+
+#: ../duplicity/backends/webdavbackend.py:224
+#, python-format
+msgid "WebDAV redirect to: %s "
+msgstr "WebDAV weitersenden an: %s "
+
+#: ../duplicity/backends/webdavbackend.py:226
+msgid "WebDAV redirected 10 times. Giving up."
+msgstr "WebDAV leitete 10 mal um. Gebe auf."
+
+#: ../duplicity/backends/webdavbackend.py:231
+msgid "WebDAV missing location header in redirect response."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:236
+msgid "WebDAV retry request with authentification headers."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:237
+#, python-format
+msgid "WebDAV %s %s request2 with headers: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:241
+#, python-format
+msgid "WebDAV response2 status %s with reason '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:258
+msgid ""
+"python-kerberos needed to use kerberos                           "
+"authorization, falling back to basic auth."
+msgstr ""
+"python-kerberos benötigt Kerberos-Legitimierung, auf die Basislegitimierung "
+"wird zurückgegriffen."
+
+#: ../duplicity/backends/webdavbackend.py:262
+#, python-format
+msgid ""
+"Kerberos authorization failed: %s.                          Falling back to "
+"basic auth."
+msgstr ""
+"Kerberos-Legitimierung ist fehlgeschlagen: %s. Auf die Basislegitimierung "
+"wird zurückgegriffen."
+
+#: ../duplicity/backends/webdavbackend.py:360
+#, python-format
+msgid "Creating missing directory %s"
+msgstr "Fehlendes Verzeichnis »%s« wird erstellt"
+
+#: ../duplicity/backends/webdavbackend.py:364
+#, python-format
+msgid "WebDAV MKCOL %s failed: %s %s"
+msgstr "WebDAV MKCOL %s fehlgeschlagen: %s %s"
+
+#: ../duplicity/backends/webdavbackend.py:377
+#, python-format
+msgid "WebDAV path decoding and translation: %s -> %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:422
+#, python-format
+msgid "WebDAV GET Bad status code %s reason %s."
+msgstr "WebDAV GET Falscher Statuscode %s Grund %s."
+
+#: ../duplicity/backends/webdavbackend.py:444
+#, python-format
+msgid "WebDAV PUT Bad status code %s reason %s."
+msgstr "WebDAV PUT Falscher Statuscode %s Grund %s."
+
+#: ../duplicity/backends/webdavbackend.py:464
+#, python-format
+msgid "WebDAV DEL Bad status code %s reason %s."
+msgstr "WebDAV DEL Falscher Statuscode %s Grund %s."
+
+#: ../duplicity/librsync.py:184
+msgid ""
+"basis_file must be a (true) file or an object whose file attribute is the "
+"underlying true file object"
+msgstr ""
+>>>>>>> MERGE-SOURCE
 
 #: ../duplicity/manifest.py:91
 #, python-format
@@ -1681,6 +2371,7 @@
 "Archivverzeichnis zu sichern. Wenn dies kein Fehler ist, verwenden Sie den "
 "»allow-source-mismatch«-Parameter, um diese Meldung auszuschalten."
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:192
 #, python-format
 msgid "Found manifest volume %s"
@@ -1698,6 +2389,19 @@
 msgstr ""
 
 #: ../duplicity/manifest.py:213
+=======
+#: ../duplicity/manifest.py:192
+#, python-format
+msgid "Found manifest volume %s"
+msgstr "Manifest-Volumen %s gefunden"
+
+#: ../duplicity/manifest.py:199
+#, python-format
+msgid "Found %s volumes in manifest"
+msgstr "%s Volumen in Manifest gefunden"
+
+#: ../duplicity/manifest.py:213
+>>>>>>> MERGE-SOURCE
 msgid "Manifests not equal because different volume numbers"
 msgstr "Manifests sind ungleich aufgrund verschiedener Datenträgerzahlen"
 
@@ -1913,3 +2617,123 @@
 #, python-format
 msgid "Releasing lockfile %s"
 msgstr "Sperrdatei »%s« wird freigegeben"
+<<<<<<< TREE
+=======
+
+#~ msgid "Found old backup set at the following time:"
+#~ msgid_plural "Found old backup sets at the following times:"
+#~ msgstr[0] "Alten Sicherungssatz zum folgenden Zeitpunkt gefunden:"
+#~ msgstr[1] "Alte Sicherungssätze zu den folgenden Zeitpunkten gefunden:"
+
+#~ msgid "Error closing filelist %s"
+#~ msgstr "Fehler beim Schließen der Dateiliste %s"
+
+#~ msgid "%s not found in archive, no files restored."
+#~ msgstr "%s im Archiv nicht gefunden, keine Dateien wiederhergestellt."
+
+#~ msgid ""
+#~ "Error is:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Fehler:\n"
+#~ "%s"
+
+#~ msgid "paramiko|pexpect"
+#~ msgstr "paramiko|pexpect"
+
+#~ msgid "Deleting backup set at time:"
+#~ msgid_plural "Deleting backup sets at times:"
+#~ msgstr[0] "Sicherungssatz löschen, zum Zeitpunkt:"
+#~ msgstr[1] "Sicherungssatz löschen, zu den Zeitpunkten:"
+
+#~ msgid "Deleting incremental signature chain %s"
+#~ msgstr "Schrittweise Signaturkette wird gelöscht: %s"
+
+#~ msgid "Deleting incremental backup chain %s"
+#~ msgstr "Schrittweise Sicherungskette wird gelöscht: %s"
+
+#~ msgid "Unable to load gio backend: %s"
+#~ msgstr "gio‐Hintergrundprogramm konnte nicht geladen werden: %s"
+
+#~ msgid ""
+#~ "Warning: Option %s is supported by ssh pexpect backend only and will be "
+#~ "ignored."
+#~ msgstr ""
+#~ "Achtung: Die Option %s wird nur vom ssh-pexpect-Hintergrundprogramm "
+#~ "unterstützt und wird vernachlässigt."
+
+#~ msgid ""
+#~ "Warning: Selected ssh backend '%s' is neither 'paramiko nor 'pexpect'. "
+#~ "Will use default paramiko instead."
+#~ msgstr ""
+#~ "Warnung: Ausgewähltes ssh-Hintergrundprogramm »%s« ist weder »paramiko« "
+#~ "noch »pexpect«. Stattdessen wird die Vorgabe »paramiko« verwendet."
+
+#~ msgid ""
+#~ "No signature chain for the requested time.  Using oldest available chain, "
+#~ "starting at time %s."
+#~ msgstr ""
+#~ "Keine Signaturkette für den angeforderten Zeitpunkt. Älteste verfügbare "
+#~ "Kette mit Beginn %s wird benutzt."
+
+#~ msgid "Reading filelist %s"
+#~ msgstr "Dateiliste wird gelesen %s"
+
+#~ msgid "Sorting filelist %s"
+#~ msgstr "Dateiliste wird sortiert %s"
+
+#~ msgid ""
+#~ "Warning: file specification '%s' in filelist %s\n"
+#~ "doesn't start with correct prefix %s.  Ignoring."
+#~ msgstr ""
+#~ "Achtung: Dateiangabe »%s« in Dateiliste %s\n"
+#~ "beginnt nicht mit dem richtigen Präfix %s. Es wird vernachlässigt."
+
+#~ msgid "Attempt %s failed: %s: %s"
+#~ msgstr "Versuch %s ist fehlgeschlagen: %s: %s"
+
+#~ msgid "Unable to load gio module"
+#~ msgstr "gio-Modul kann nicht geladen werden"
+
+#~ msgid ""
+#~ "Sign key should be an 8 character hex string, like 'AA0E73D2'.\n"
+#~ "Received '%s' instead."
+#~ msgstr ""
+#~ "Signierschlüssel sollte eine 8 Zeichen lange Hexadezimalzahl sein, wie "
+#~ "»AA0E73D2«.\n"
+#~ "Stattdessen wurde »%s« empfangen."
+
+#~ msgid "Future prefix errors will not be logged."
+#~ msgstr "Weitere Präfixfehler werden nicht protokolliert."
+
+#~ msgid "Starting to write %s"
+#~ msgstr "Mit Schreibvorgang von %s wird begonnen"
+
+#~ msgid "Giving up trying to execute '%s' after %d attempt"
+#~ msgid_plural "Giving up trying to execute '%s' after %d attempts"
+#~ msgstr[0] "Ausführung von »%s« nach dem %d. Versuch aufgegeben"
+#~ msgstr[1] "Ausführung von »%s« nach %d Versuchen aufgegeben"
+
+#~ msgid "Running '%s' failed with code %d (attempt #%d)"
+#~ msgid_plural "Running '%s' failed with code %d (attempt #%d)"
+#~ msgstr[0] ""
+#~ "Ausführung von »%s« ist mit Code %d ist fehlgeschlagen (Versuch #%d)"
+#~ msgstr[1] ""
+#~ "Ausführung von »%s« ist mit Code %d ist fehlgeschlagen (Versuch #%d)"
+
+#~ msgid ""
+#~ "One only volume required.\n"
+#~ "Renaming %s to %s"
+#~ msgstr ""
+#~ "Es wird nur ein Datenträger benötigt.\n"
+#~ "%s wird zu %s umbenannt."
+
+#~ msgid "File: %s"
+#~ msgstr "Datei: %s"
+
+#~ msgid "Total number of backup: %d"
+#~ msgstr "Gesamtzahl an Sicherungen: %d"
+
+#~ msgid "Type of file change:"
+#~ msgstr "Art der Dateiänderung:"
+>>>>>>> MERGE-SOURCE

=== modified file 'po/duplicity.pot'
--- po/duplicity.pot	2019-05-19 16:14:00 +0000
+++ po/duplicity.pot	2019-05-20 08:57:58 +0000
@@ -8,7 +8,11 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
+<<<<<<< TREE
 "POT-Creation-Date: 2019-05-19 10:40-0500\n"
+=======
+"POT-Creation-Date: 2018-12-16 11:10-0600\n"
+>>>>>>> MERGE-SOURCE
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@xxxxxx>\n"
@@ -18,219 +22,354 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
+<<<<<<< TREE
 #: ../bin/duplicity:128
+=======
+#: ../bin/duplicity:124
+>>>>>>> MERGE-SOURCE
 msgid "Reuse configured PASSPHRASE as SIGN_PASSPHRASE"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:135
+=======
+#: ../bin/duplicity:131
+>>>>>>> MERGE-SOURCE
 msgid "Reuse configured SIGN_PASSPHRASE as PASSPHRASE"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:174
+=======
+#: ../bin/duplicity:170
+>>>>>>> MERGE-SOURCE
 msgid "PASSPHRASE variable not set, asking user."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:189
+=======
+#: ../bin/duplicity:185
+>>>>>>> MERGE-SOURCE
 msgid "GnuPG passphrase for signing key:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:194
+=======
+#: ../bin/duplicity:190
+>>>>>>> MERGE-SOURCE
 msgid "GnuPG passphrase:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:199
+=======
+#: ../bin/duplicity:195
+>>>>>>> MERGE-SOURCE
 msgid "Retype passphrase for signing key to confirm: "
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:201
+=======
+#: ../bin/duplicity:197
+>>>>>>> MERGE-SOURCE
 msgid "Retype passphrase to confirm: "
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:204
+=======
+#: ../bin/duplicity:200
+>>>>>>> MERGE-SOURCE
 msgid "First and second passphrases do not match!  Please try again."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:211
+=======
+#: ../bin/duplicity:207
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Cannot use empty passphrase with symmetric encryption!  Please try again."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:268
+=======
+#: ../bin/duplicity:264
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "File %s complete in backup set.\n"
 "Continuing restart on file %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:277
+=======
+#: ../bin/duplicity:273
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "File %s missing in backup set.\n"
 "Continuing restart on file %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:326
+=======
+#: ../bin/duplicity:329
+#, python-format
+msgid "Remote filesize %d for %s does not match local size %d, retrying."
+msgstr ""
+
+#: ../bin/duplicity:336
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s was corrupted during upload."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:359
+=======
+#: ../bin/duplicity:369
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Restarting backup, but current encryption settings do not match original "
 "settings"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:382
+=======
+#: ../bin/duplicity:392
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Restarting after volume %s, file %s, block %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:452
+=======
+#: ../bin/duplicity:462
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:602
+=======
+#: ../bin/duplicity:611
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Fatal Error: Unable to start incremental backup.  Old signatures not found "
 "and incremental specified"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:606
+=======
+#: ../bin/duplicity:615
+>>>>>>> MERGE-SOURCE
 msgid "No signatures found, switching to full backup."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:620
+=======
+#: ../bin/duplicity:629
+>>>>>>> MERGE-SOURCE
 msgid "Backup Statistics"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:726
 #, python-format
 msgid "%s not found in archive - no files restored."
 msgstr ""
 
 #: ../bin/duplicity:730
+=======
+#: ../bin/duplicity:735
+#, python-format
+msgid "%s not found in archive - no files restored."
+msgstr ""
+
+#: ../bin/duplicity:739
+>>>>>>> MERGE-SOURCE
 msgid "No files found in archive - nothing restored."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:763
+=======
+#: ../bin/duplicity:772
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d of %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:797
+=======
+#: ../bin/duplicity:806
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Invalid data - %s hash mismatch for file:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:800
+=======
+#: ../bin/duplicity:809
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Calculated hash: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:801
+=======
+#: ../bin/duplicity:810
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Manifest hash: %s"
 msgstr ""
 
-#: ../bin/duplicity:844
+#: ../bin/duplicity:853
 #, python-format
 msgid "Volume was signed by key %s, not %s"
 msgstr ""
 
-#: ../bin/duplicity:876
+#: ../bin/duplicity:885
 #, python-format
 msgid "Verify complete: %s, %s."
 msgstr ""
 
-#: ../bin/duplicity:877
+#: ../bin/duplicity:886
 #, python-format
 msgid "%d file compared"
 msgid_plural "%d files compared"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../bin/duplicity:879
+#: ../bin/duplicity:888
 #, python-format
 msgid "%d difference found"
 msgid_plural "%d differences found"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../bin/duplicity:898
+#: ../bin/duplicity:907
 msgid "No extraneous files found, nothing deleted in cleanup."
 msgstr ""
 
-#: ../bin/duplicity:903
+#: ../bin/duplicity:912
 msgid "Deleting this file from backend:"
 msgid_plural "Deleting these files from backend:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../bin/duplicity:914
+#: ../bin/duplicity:923
 msgid "Found the following file to delete:"
 msgid_plural "Found the following files to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../bin/duplicity:917
+#: ../bin/duplicity:926
 msgid "Run duplicity again with the --force option to actually delete."
 msgstr ""
 
-#: ../bin/duplicity:960
+#: ../bin/duplicity:969
 msgid "There are backup set(s) at time(s):"
 msgstr ""
 
-#: ../bin/duplicity:962
+#: ../bin/duplicity:971
 msgid "Which can't be deleted because newer sets depend on them."
 msgstr ""
 
-#: ../bin/duplicity:966
+#: ../bin/duplicity:975
 msgid ""
 "Current active backup chain is older than specified time.  However, it will "
 "not be deleted.  To remove all your backups, manually purge the repository."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:979
+=======
+#: ../bin/duplicity:988
+>>>>>>> MERGE-SOURCE
 msgid "No old backup sets found, nothing deleted."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:982
+=======
+#: ../bin/duplicity:991
+>>>>>>> MERGE-SOURCE
 msgid "Deleting backup chain at time:"
 msgid_plural "Deleting backup chains at times:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:994
+=======
+#: ../bin/duplicity:1003
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting any incremental signature chain rooted at %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:996
+=======
+#: ../bin/duplicity:1005
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting any incremental backup chain rooted at %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:999
+=======
+#: ../bin/duplicity:1008
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete signature chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1001
+=======
+#: ../bin/duplicity:1010
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete backup chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1007
+=======
+#: ../bin/duplicity:1016
+>>>>>>> MERGE-SOURCE
 msgid "Found old backup chain at the following time:"
 msgid_plural "Found old backup chains at the following times:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1011
+=======
+#: ../bin/duplicity:1020
+>>>>>>> MERGE-SOURCE
 msgid "Rerun command with --force option to actually delete."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1034
 msgid "No old backup sets found."
 msgstr ""
@@ -251,80 +390,143 @@
 msgstr ""
 
 #: ../bin/duplicity:1231
+=======
+#: ../bin/duplicity:1097
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting local %s (not authoritative at backend)."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1236
+=======
+#: ../bin/duplicity:1102
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Unable to delete %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1270 ../duplicity/dup_temp.py:267
+=======
+#: ../bin/duplicity:1133 ../duplicity/dup_temp.py:266
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Failed to read %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1284
+=======
+#: ../bin/duplicity:1147
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Copying %s to local cache."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1332
+=======
+#: ../bin/duplicity:1195
+>>>>>>> MERGE-SOURCE
 msgid "Local and Remote metadata are synchronized, no sync needed."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1337
+=======
+#: ../bin/duplicity:1200
+>>>>>>> MERGE-SOURCE
 msgid "Synchronizing remote metadata to local cache..."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1350
+=======
+#: ../bin/duplicity:1212
+>>>>>>> MERGE-SOURCE
 msgid "Sync would copy the following from remote to local:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1353
+=======
+#: ../bin/duplicity:1215
+>>>>>>> MERGE-SOURCE
 msgid "Sync would remove the following spurious local files:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1397
+=======
+#: ../bin/duplicity:1258
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get free space on temp."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1405
+=======
+#: ../bin/duplicity:1266
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp space has %d available, backup needs approx %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1408
+=======
+#: ../bin/duplicity:1269
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp has %d available, backup will use approx %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1416
+=======
+#: ../bin/duplicity:1277
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get max open files."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1420
+=======
+#: ../bin/duplicity:1281
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Max open files of %s is too low, should be >= 1024.\n"
 "Use 'ulimit -n 1024' or higher to correct.\n"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1472
+=======
+#: ../bin/duplicity:1332
+>>>>>>> MERGE-SOURCE
 msgid ""
 "RESTART: The first volume failed to upload before termination.\n"
 "         Restart is impossible...starting backup from beginning."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1478
+=======
+#: ../bin/duplicity:1338
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Volumes %d to %d failed to upload before termination.\n"
 "         Restarting backup at volume %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1485
+=======
+#: ../bin/duplicity:1345
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n"
@@ -333,7 +535,11 @@
 "         backup then restart the backup from the beginning."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1506
+=======
+#: ../bin/duplicity:1366
+>>>>>>> MERGE-SOURCE
 msgid ""
 "\n"
 "PYTHONOPTIMIZE in the environment causes duplicity to fail to\n"
@@ -343,59 +549,107 @@
 "See https://bugs.launchpad.net/duplicity/+bug/931175\n";
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1529
+=======
+#: ../bin/duplicity:1389
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Acquiring lockfile %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1587
+=======
+#: ../bin/duplicity:1447
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Last %s backup left a partial set, restarting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1591
+=======
+#: ../bin/duplicity:1451
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Cleaning up previous partial %s backup set, restarting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1603
+=======
+#: ../bin/duplicity:1463
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1605
+=======
+#: ../bin/duplicity:1465
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date: none"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1608
+=======
+#: ../bin/duplicity:1467
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup is too old, forcing full backup"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1657
+=======
+#: ../bin/duplicity:1511
+>>>>>>> MERGE-SOURCE
 msgid ""
 "When using symmetric encryption, the signing passphrase must equal the "
 "encryption passphrase."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1726
+=======
+#: ../bin/duplicity:1580
+>>>>>>> MERGE-SOURCE
 msgid "INT intercepted...exiting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1734
+=======
+#: ../bin/duplicity:1588
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "GPG error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1744
+=======
+#: ../bin/duplicity:1598
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "User error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1754
+=======
+#: ../bin/duplicity:1608
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Backend error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/rdiffdir:63 ../duplicity/commandline.py:269
+=======
+#: ../bin/rdiffdir:61 ../duplicity/commandline.py:259
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Error opening file %s"
 msgstr ""
@@ -415,8 +669,13 @@
 msgid "Error initializing file %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/selection.py:129 ../duplicity/selection.py:154
 #: ../duplicity/selection.py:463
+=======
+#: ../duplicity/selection.py:127 ../duplicity/selection.py:152
+#: ../duplicity/selection.py:459
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Error accessing possibly locked file %s"
 msgstr ""
@@ -476,7 +735,11 @@
 "This may not be what you intended"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:78
+=======
+#: ../duplicity/commandline.py:71
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Warning: Option %s is pending deprecation and will be removed in a future "
@@ -484,7 +747,11 @@
 "Use of default filenames is strongly suggested."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:85
+=======
+#: ../duplicity/commandline.py:78
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Warning: Option %s is pending deprecation and will be removed in a future "
@@ -493,7 +760,11 @@
 "should be used instead."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:95
+=======
+#: ../duplicity/commandline.py:88
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Warning: Option %s is pending deprecation and will be removed in a future "
@@ -505,10 +776,17 @@
 
 #. Used in usage help to represent a Unix-style path name. Example:
 #. --archive-dir <path>
+<<<<<<< TREE
 #: ../duplicity/commandline.py:290 ../duplicity/commandline.py:300
 #: ../duplicity/commandline.py:321 ../duplicity/commandline.py:395
 #: ../duplicity/commandline.py:413 ../duplicity/commandline.py:642
 #: ../duplicity/commandline.py:675 ../duplicity/commandline.py:874
+=======
+#: ../duplicity/commandline.py:280 ../duplicity/commandline.py:290
+#: ../duplicity/commandline.py:311 ../duplicity/commandline.py:385
+#: ../duplicity/commandline.py:403 ../duplicity/commandline.py:595
+#: ../duplicity/commandline.py:814
+>>>>>>> MERGE-SOURCE
 msgid "path"
 msgstr ""
 
@@ -518,9 +796,15 @@
 #. --hidden-encrypt-key <gpg_key_id>
 #. Used in usage help to represent an ID for a GnuPG key. Example:
 #. --encrypt-key <gpg_key_id>
+<<<<<<< TREE
 #: ../duplicity/commandline.py:316 ../duplicity/commandline.py:323
 #: ../duplicity/commandline.py:419 ../duplicity/commandline.py:626
 #: ../duplicity/commandline.py:847
+=======
+#: ../duplicity/commandline.py:306 ../duplicity/commandline.py:313
+#: ../duplicity/commandline.py:409 ../duplicity/commandline.py:579
+#: ../duplicity/commandline.py:787
+>>>>>>> MERGE-SOURCE
 msgid "gpg-key-id"
 msgstr ""
 
@@ -528,43 +812,74 @@
 #. matching one or more files, as described in the documentation.
 #. Example:
 #. --exclude <shell_pattern>
+<<<<<<< TREE
 #: ../duplicity/commandline.py:331 ../duplicity/commandline.py:444
 #: ../duplicity/commandline.py:897
+=======
+#: ../duplicity/commandline.py:321 ../duplicity/commandline.py:434
+#: ../duplicity/commandline.py:837
+>>>>>>> MERGE-SOURCE
 msgid "shell_pattern"
 msgstr ""
 
 #. Used in usage help to represent the name of a file. Example:
 #. --log-file <filename>
+<<<<<<< TREE
 #: ../duplicity/commandline.py:337 ../duplicity/commandline.py:346
 #: ../duplicity/commandline.py:353 ../duplicity/commandline.py:446
 #: ../duplicity/commandline.py:453 ../duplicity/commandline.py:466
 #: ../duplicity/commandline.py:843
+=======
+#: ../duplicity/commandline.py:327 ../duplicity/commandline.py:336
+#: ../duplicity/commandline.py:343 ../duplicity/commandline.py:436
+#: ../duplicity/commandline.py:443 ../duplicity/commandline.py:456
+#: ../duplicity/commandline.py:783
+>>>>>>> MERGE-SOURCE
 msgid "filename"
 msgstr ""
 
 #. Used in usage help to represent a regular expression (regexp).
+<<<<<<< TREE
 #: ../duplicity/commandline.py:360 ../duplicity/commandline.py:457
+=======
+#: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+>>>>>>> MERGE-SOURCE
 msgid "regular_expression"
 msgstr ""
 
 #. Used in usage help to represent a time spec for a previous
 #. point in time, as described in the documentation. Example:
 #. duplicity remove-older-than time [options] target_url
+<<<<<<< TREE
 #: ../duplicity/commandline.py:364 ../duplicity/commandline.py:407
 #: ../duplicity/commandline.py:533 ../duplicity/commandline.py:929
+=======
+#: ../duplicity/commandline.py:354 ../duplicity/commandline.py:397
+#: ../duplicity/commandline.py:518 ../duplicity/commandline.py:869
+>>>>>>> MERGE-SOURCE
 msgid "time"
 msgstr ""
 
 #. Used in usage help. (Should be consistent with the "Options:"
 #. header.) Example:
 #. duplicity [full|incremental] [options] source_dir target_url
+<<<<<<< TREE
 #: ../duplicity/commandline.py:415 ../duplicity/commandline.py:513
 #: ../duplicity/commandline.py:536 ../duplicity/commandline.py:634
 #: ../duplicity/commandline.py:862
+=======
+#: ../duplicity/commandline.py:405 ../duplicity/commandline.py:498
+#: ../duplicity/commandline.py:521 ../duplicity/commandline.py:587
+#: ../duplicity/commandline.py:802
+>>>>>>> MERGE-SOURCE
 msgid "options"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:430
+=======
+#: ../duplicity/commandline.py:420
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Running in 'ignore errors' mode due to %s; please re-consider if this was "
@@ -572,31 +887,52 @@
 msgstr ""
 
 #. Used in usage help to represent an imap mailbox
+<<<<<<< TREE
 #: ../duplicity/commandline.py:442
+=======
+#: ../duplicity/commandline.py:432
+>>>>>>> MERGE-SOURCE
 msgid "imap_mailbox"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:460
+=======
+#: ../duplicity/commandline.py:450
+>>>>>>> MERGE-SOURCE
 msgid "file_descriptor"
 msgstr ""
 
 #. Used in usage help to represent a desired number of
 #. something. Example:
 #. --num-retries <number>
+<<<<<<< TREE
 #: ../duplicity/commandline.py:471 ../duplicity/commandline.py:493
 #: ../duplicity/commandline.py:510 ../duplicity/commandline.py:519
 #: ../duplicity/commandline.py:566 ../duplicity/commandline.py:571
 #: ../duplicity/commandline.py:575 ../duplicity/commandline.py:594
 #: ../duplicity/commandline.py:600 ../duplicity/commandline.py:604
 #: ../duplicity/commandline.py:670 ../duplicity/commandline.py:857
+=======
+#: ../duplicity/commandline.py:461 ../duplicity/commandline.py:483
+#: ../duplicity/commandline.py:495 ../duplicity/commandline.py:504
+#: ../duplicity/commandline.py:545 ../duplicity/commandline.py:550
+#: ../duplicity/commandline.py:554 ../duplicity/commandline.py:623
+#: ../duplicity/commandline.py:797
+>>>>>>> MERGE-SOURCE
 msgid "number"
 msgstr ""
 
 #. Used in usage help (noun)
+<<<<<<< TREE
 #: ../duplicity/commandline.py:474
+=======
+#: ../duplicity/commandline.py:464
+>>>>>>> MERGE-SOURCE
 msgid "backup name"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:589
 msgid "policy"
 msgstr ""
@@ -605,21 +941,40 @@
 msgid "Hot|Cool|Archive"
 msgstr ""
 
+=======
+>>>>>>> MERGE-SOURCE
 #. noun
+<<<<<<< TREE
 #: ../duplicity/commandline.py:610 ../duplicity/commandline.py:613
 #: ../duplicity/commandline.py:828
+=======
+#: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
+#: ../duplicity/commandline.py:768
+>>>>>>> MERGE-SOURCE
 msgid "command"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:616
+=======
+#: ../duplicity/commandline.py:569
+>>>>>>> MERGE-SOURCE
 msgid "pyrax|cloudfiles"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:637
+=======
+#: ../duplicity/commandline.py:590
+>>>>>>> MERGE-SOURCE
 msgid "pem formatted bundle of certificate authorities"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:638
+=======
+#: ../duplicity/commandline.py:591
+>>>>>>> MERGE-SOURCE
 msgid "path to a folder with certificate authority files"
 msgstr ""
 
@@ -629,113 +984,190 @@
 #. --backend-retry-delay <seconds>
 #. Used in usage help. Example:
 #. --timeout <seconds>
+<<<<<<< TREE
 #: ../duplicity/commandline.py:647 ../duplicity/commandline.py:681
 #: ../duplicity/commandline.py:891
+=======
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+>>>>>>> MERGE-SOURCE
 msgid "seconds"
 msgstr ""
 
 #. abbreviation for "character" (noun)
+<<<<<<< TREE
 #: ../duplicity/commandline.py:653 ../duplicity/commandline.py:825
+=======
+#: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+>>>>>>> MERGE-SOURCE
 msgid "char"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:791
+=======
+#: ../duplicity/commandline.py:731
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Using archive dir: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:792
+=======
+#: ../duplicity/commandline.py:732
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Using backup name: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:799
+=======
+#: ../duplicity/commandline.py:739
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Command line error: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:800
+=======
+#: ../duplicity/commandline.py:740
+>>>>>>> MERGE-SOURCE
 msgid "Enter 'duplicity --help' for help screen."
 msgstr ""
 
 #. Used in usage help to represent a Unix-style path name. Example:
 #. rsync://user[:password]@other_host[:port]//absolute_path
+<<<<<<< TREE
 #: ../duplicity/commandline.py:813
+=======
+#: ../duplicity/commandline.py:753
+>>>>>>> MERGE-SOURCE
 msgid "absolute_path"
 msgstr ""
 
 #. Used in usage help. Example:
 #. tahoe://alias/some_dir
+<<<<<<< TREE
 #: ../duplicity/commandline.py:817
+=======
+#: ../duplicity/commandline.py:757
+>>>>>>> MERGE-SOURCE
 msgid "alias"
 msgstr ""
 
 #. Used in help to represent a "bucket name" for Amazon Web
 #. Services' Simple Storage Service (S3). Example:
 #. s3://other.host/bucket_name[/prefix]
+<<<<<<< TREE
 #: ../duplicity/commandline.py:822
+=======
+#: ../duplicity/commandline.py:762
+>>>>>>> MERGE-SOURCE
 msgid "bucket_name"
 msgstr ""
 
 #. Used in usage help to represent the name of a container in
 #. Amazon Web Services' Cloudfront. Example:
 #. cf+http://container_name
+<<<<<<< TREE
 #: ../duplicity/commandline.py:833
+=======
+#: ../duplicity/commandline.py:773
+>>>>>>> MERGE-SOURCE
 msgid "container_name"
 msgstr ""
 
 #. noun
+<<<<<<< TREE
 #: ../duplicity/commandline.py:836
+=======
+#: ../duplicity/commandline.py:776
+>>>>>>> MERGE-SOURCE
 msgid "count"
 msgstr ""
 
 #. Used in usage help to represent the name of a file directory
+<<<<<<< TREE
 #: ../duplicity/commandline.py:839
+=======
+#: ../duplicity/commandline.py:779
+>>>>>>> MERGE-SOURCE
 msgid "directory"
 msgstr ""
 
 #. Used in usage help, e.g. to represent the name of a code
 #. module. Example:
 #. rsync://user[:password]@other.host[:port]::/module/some_dir
+<<<<<<< TREE
 #: ../duplicity/commandline.py:852
+=======
+#: ../duplicity/commandline.py:792
+>>>>>>> MERGE-SOURCE
 msgid "module"
 msgstr ""
 
 #. Used in usage help to represent an internet hostname. Example:
 #. ftp://user[:password]@other.host[:port]/some_dir
+<<<<<<< TREE
 #: ../duplicity/commandline.py:866
+=======
+#: ../duplicity/commandline.py:806
+>>>>>>> MERGE-SOURCE
 msgid "other.host"
 msgstr ""
 
 #. Used in usage help. Example:
 #. ftp://user[:password]@other.host[:port]/some_dir
+<<<<<<< TREE
 #: ../duplicity/commandline.py:870
+=======
+#: ../duplicity/commandline.py:810
+>>>>>>> MERGE-SOURCE
 msgid "password"
 msgstr ""
 
 #. Used in usage help to represent a TCP port number. Example:
 #. ftp://user[:password]@other.host[:port]/some_dir
+<<<<<<< TREE
 #: ../duplicity/commandline.py:878
+=======
+#: ../duplicity/commandline.py:818
+>>>>>>> MERGE-SOURCE
 msgid "port"
 msgstr ""
 
 #. Used in usage help. This represents a string to be used as a
 #. prefix to names for backup files created by Duplicity. Example:
 #. s3://other.host/bucket_name[/prefix]
+<<<<<<< TREE
 #: ../duplicity/commandline.py:883
+=======
+#: ../duplicity/commandline.py:823
+>>>>>>> MERGE-SOURCE
 msgid "prefix"
 msgstr ""
 
 #. Used in usage help to represent a Unix-style path name. Example:
 #. rsync://user[:password]@other.host[:port]/relative_path
+<<<<<<< TREE
 #: ../duplicity/commandline.py:887
+=======
+#: ../duplicity/commandline.py:827
+>>>>>>> MERGE-SOURCE
 msgid "relative_path"
 msgstr ""
 
 #. Used in usage help to represent the name of a single file
 #. directory or a Unix-style path to a directory. Example:
 #. file:///some_dir
+<<<<<<< TREE
 #: ../duplicity/commandline.py:902
+=======
+#: ../duplicity/commandline.py:842
+>>>>>>> MERGE-SOURCE
 msgid "some_dir"
 msgstr ""
 
@@ -743,14 +1175,22 @@
 #. directory or a Unix-style path to a directory where files will be
 #. coming FROM. Example:
 #. duplicity [full|incremental] [options] source_dir target_url
+<<<<<<< TREE
 #: ../duplicity/commandline.py:908
+=======
+#: ../duplicity/commandline.py:848
+>>>>>>> MERGE-SOURCE
 msgid "source_dir"
 msgstr ""
 
 #. Used in usage help to represent a URL files will be coming
 #. FROM. Example:
 #. duplicity [restore] [options] source_url target_dir
+<<<<<<< TREE
 #: ../duplicity/commandline.py:913
+=======
+#: ../duplicity/commandline.py:853
+>>>>>>> MERGE-SOURCE
 msgid "source_url"
 msgstr ""
 
@@ -758,91 +1198,155 @@
 #. directory or a Unix-style path to a directory. where files will be
 #. going TO. Example:
 #. duplicity [restore] [options] source_url target_dir
+<<<<<<< TREE
 #: ../duplicity/commandline.py:919
+=======
+#: ../duplicity/commandline.py:859
+>>>>>>> MERGE-SOURCE
 msgid "target_dir"
 msgstr ""
 
 #. Used in usage help to represent a URL files will be going TO.
 #. Example:
 #. duplicity [full|incremental] [options] source_dir target_url
+<<<<<<< TREE
 #: ../duplicity/commandline.py:924
+=======
+#: ../duplicity/commandline.py:864
+>>>>>>> MERGE-SOURCE
 msgid "target_url"
 msgstr ""
 
 #. Used in usage help to represent a user name (i.e. login).
 #. Example:
 #. ftp://user[:password]@other.host[:port]/some_dir
+<<<<<<< TREE
 #: ../duplicity/commandline.py:934
+=======
+#: ../duplicity/commandline.py:874
+>>>>>>> MERGE-SOURCE
 msgid "user"
 msgstr ""
 
 #. account id for b2. Example: b2://account_id@bucket/
+<<<<<<< TREE
 #: ../duplicity/commandline.py:937
+=======
+#: ../duplicity/commandline.py:877
+>>>>>>> MERGE-SOURCE
 msgid "account_id"
 msgstr ""
 
 #. application_key for b2.
 #. Example: b2://account_id:application_key@bucket/
+<<<<<<< TREE
 #: ../duplicity/commandline.py:941
+=======
+#: ../duplicity/commandline.py:881
+>>>>>>> MERGE-SOURCE
 msgid "application_key"
 msgstr ""
 
 #. Header in usage help
+<<<<<<< TREE
 #: ../duplicity/commandline.py:960
+=======
+#: ../duplicity/commandline.py:899
+>>>>>>> MERGE-SOURCE
 msgid "Backends and their URL formats:"
 msgstr ""
 
 #. Header in usage help
+<<<<<<< TREE
 #: ../duplicity/commandline.py:992
+=======
+#: ../duplicity/commandline.py:930
+>>>>>>> MERGE-SOURCE
 msgid "Commands:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1017
+=======
+#: ../duplicity/commandline.py:954
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Specified archive directory '%s' does not exist, or is not a directory"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1026
+=======
+#: ../duplicity/commandline.py:963
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Sign key should be an 8, 16 alt. 40 character hex string, like 'AA0E73D2'.\n"
 "Received '%s' instead."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1086
+=======
+#: ../duplicity/commandline.py:1023
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Restore destination directory %s already exists.\n"
 "Will not overwrite."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1091
+=======
+#: ../duplicity/commandline.py:1028
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Verify directory %s does not exist"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1097
+=======
+#: ../duplicity/commandline.py:1034
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Backup source directory %s does not exist."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1128
+=======
+#: ../duplicity/commandline.py:1065
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Command line warning: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1128
+=======
+#: ../duplicity/commandline.py:1065
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Selection options --exclude/--include\n"
 "currently work only when backing up,not restoring."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1164
+=======
+#: ../duplicity/commandline.py:1101
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "GPG binary is %s, version %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1191
+=======
+#: ../duplicity/commandline.py:1129
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Bad URL '%s'.\n"
@@ -850,7 +1354,11 @@
 "\"file:///usr/local\".  See the man page for more information."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:1221
+=======
+#: ../duplicity/commandline.py:1154
+>>>>>>> MERGE-SOURCE
 msgid "Main action: "
 msgstr ""
 
@@ -879,17 +1387,29 @@
 msgid "Attempt %s failed. %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backend.py:493
+=======
+#: ../duplicity/backend.py:488
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Reading results of '%s'"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backend.py:519
+=======
+#: ../duplicity/backend.py:514
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Writing %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backend.py:560
+=======
+#: ../duplicity/backend.py:555
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s not found locally after get from backend"
 msgstr ""
@@ -945,142 +1465,262 @@
 msgid "Writing %s of type %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:178 ../duplicity/collections.py:192
+=======
+#: ../duplicity/collections.py:158 ../duplicity/collections.py:172
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "BackupSet.delete: missing %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:217
+=======
+#: ../duplicity/collections.py:197
+>>>>>>> MERGE-SOURCE
 msgid "Fatal Error: No manifests found for most recent backup"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:226
+=======
+#: ../duplicity/collections.py:206
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Fatal Error: Remote manifest does not match local one.  Either the remote "
 "backup set or the local archive directory has been corrupted."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:234
+=======
+#: ../duplicity/collections.py:214
+>>>>>>> MERGE-SOURCE
 msgid "Fatal Error: Neither remote nor local manifest is readable."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:245
+=======
+#: ../duplicity/collections.py:225
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processing local manifest %s (%s)"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:257
+=======
+#: ../duplicity/collections.py:237
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Error processing remote manifest (%s): %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:260
+=======
+#: ../duplicity/collections.py:240
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processing remote manifest %s (%s)"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:356
+=======
+#: ../duplicity/collections.py:323
+>>>>>>> MERGE-SOURCE
 msgid "Preferring Backupset over previous one!"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:359
+=======
+#: ../duplicity/collections.py:326
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Ignoring incremental Backupset (start_time: %s; needed: %s)"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:364
+=======
+#: ../duplicity/collections.py:331
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Added incremental Backupset (start_time: %s / end_time: %s)"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:434
+=======
+#: ../duplicity/collections.py:401
+>>>>>>> MERGE-SOURCE
 msgid "Chain start time: "
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:435
+=======
+#: ../duplicity/collections.py:402
+>>>>>>> MERGE-SOURCE
 msgid "Chain end time: "
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:436
+=======
+#: ../duplicity/collections.py:403
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Number of contained backup sets: %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:438
+=======
+#: ../duplicity/collections.py:405
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Total number of contained volumes: %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:440 ../duplicity/collections.py:1236
+=======
+#: ../duplicity/collections.py:407
+>>>>>>> MERGE-SOURCE
 msgid "Type of backup set:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:440 ../duplicity/collections.py:1236
+=======
+#: ../duplicity/collections.py:407
+>>>>>>> MERGE-SOURCE
 msgid "Time:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:440
+=======
+#: ../duplicity/collections.py:407
+>>>>>>> MERGE-SOURCE
 msgid "Num volumes:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:444 ../duplicity/collections.py:1242
+=======
+#: ../duplicity/collections.py:411
+>>>>>>> MERGE-SOURCE
 msgid "Full"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:447 ../duplicity/collections.py:1244
+=======
+#: ../duplicity/collections.py:414
+>>>>>>> MERGE-SOURCE
 msgid "Incremental"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:507
+=======
+#: ../duplicity/collections.py:474
+>>>>>>> MERGE-SOURCE
 msgid "local"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:509
+=======
+#: ../duplicity/collections.py:476
+>>>>>>> MERGE-SOURCE
 msgid "remote"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:664
+=======
+#: ../duplicity/collections.py:632
+>>>>>>> MERGE-SOURCE
 msgid "Collection Status"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:666
+=======
+#: ../duplicity/collections.py:634
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Connecting with backend: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:668
+=======
+#: ../duplicity/collections.py:636
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Archive dir: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:671
+=======
+#: ../duplicity/collections.py:639
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Found %d secondary backup chain."
 msgid_plural "Found %d secondary backup chains."
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:676
+=======
+#: ../duplicity/collections.py:644
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Secondary chain %d of %d:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:682
+=======
+#: ../duplicity/collections.py:650
+>>>>>>> MERGE-SOURCE
 msgid "Found primary backup chain with matching signature chain:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:686
+=======
+#: ../duplicity/collections.py:654
+>>>>>>> MERGE-SOURCE
 msgid "No backup chains with active signatures found"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:689
+=======
+#: ../duplicity/collections.py:657
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Also found %d backup set not part of any chain,"
 msgid_plural "Also found %d backup sets not part of any chain,"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:693
+=======
+#: ../duplicity/collections.py:661
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "and %d incomplete backup set."
 msgid_plural "and %d incomplete backup sets."
@@ -1088,101 +1728,174 @@
 msgstr[1] ""
 
 #. "cleanup" is a hard-coded command, so do not translate it
+<<<<<<< TREE
 #: ../duplicity/collections.py:698
+=======
+#: ../duplicity/collections.py:666
+>>>>>>> MERGE-SOURCE
 msgid "These may be deleted by running duplicity with the \"cleanup\" command."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:701
+=======
+#: ../duplicity/collections.py:669
+>>>>>>> MERGE-SOURCE
 msgid "No orphaned or incomplete backup sets found."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:717
+=======
+#: ../duplicity/collections.py:685
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d file exists on backend"
 msgid_plural "%d files exist on backend"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:727
+=======
+#: ../duplicity/collections.py:695
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d file exists in cache"
 msgid_plural "%d files exist in cache"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:780
+=======
+#: ../duplicity/collections.py:748
+>>>>>>> MERGE-SOURCE
 msgid "Warning, discarding last backup set, because of missing signature file."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:803
+=======
+#: ../duplicity/collections.py:771
+>>>>>>> MERGE-SOURCE
 msgid "Warning, found the following local orphaned signature file:"
 msgid_plural "Warning, found the following local orphaned signature files:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:812
+=======
+#: ../duplicity/collections.py:780
+>>>>>>> MERGE-SOURCE
 msgid "Warning, found the following remote orphaned signature file:"
 msgid_plural "Warning, found the following remote orphaned signature files:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:821
+=======
+#: ../duplicity/collections.py:789
+>>>>>>> MERGE-SOURCE
 msgid "Warning, found signatures but no corresponding backup files"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:825
+=======
+#: ../duplicity/collections.py:793
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Warning, found incomplete backup sets, probably left from aborted session"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:829
+=======
+#: ../duplicity/collections.py:797
+>>>>>>> MERGE-SOURCE
 msgid "Warning, found the following orphaned backup file:"
 msgid_plural "Warning, found the following orphaned backup files:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:846
+=======
+#: ../duplicity/collections.py:814
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Extracting backup chains from list of files: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:857
+=======
+#: ../duplicity/collections.py:825
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s is part of known set"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:860
+=======
+#: ../duplicity/collections.py:828
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s is not part of a known set; creating new set"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:865
+=======
+#: ../duplicity/collections.py:833
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Ignoring file (rejected by backup set) '%s'"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:881
+=======
+#: ../duplicity/collections.py:849
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Found backup chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:886
+=======
+#: ../duplicity/collections.py:854
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Added set %s to pre-existing chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:890
+=======
+#: ../duplicity/collections.py:858
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Found orphaned set %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:1040
+=======
+#: ../duplicity/collections.py:1012
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "No signature chain for the requested time. Using oldest available chain, "
 "starting at time %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:1234
 #, python-format
 msgid "File: %s"
@@ -1198,6 +1911,9 @@
 msgstr ""
 
 #: ../duplicity/robust.py:64
+=======
+#: ../duplicity/robust.py:61
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Error listing directory %s"
 msgstr ""
@@ -1232,17 +1948,29 @@
 msgid "D %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/lazy.py:352
+=======
+#: ../duplicity/lazy.py:334
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Warning: oldindex %s >= newindex %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/lazy.py:427
+=======
+#: ../duplicity/lazy.py:409
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Error '%s' processing %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/lazy.py:437
+=======
+#: ../duplicity/lazy.py:419
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Skipping %s because of previous error"
 msgstr ""
@@ -1252,100 +1980,173 @@
 msgid "Connection failed, please check your password: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:89
+=======
+#: ../duplicity/backends/multibackend.py:85
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: Could not parse query string %s: %s "
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:98
+=======
+#: ../duplicity/backends/multibackend.py:94
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: Invalid query string %s: more than one value for %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:103
+=======
+#: ../duplicity/backends/multibackend.py:99
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: Invalid query string %s: unknown parameter %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:153
 #: ../duplicity/backends/multibackend.py:158
+=======
+#: ../duplicity/backends/multibackend.py:149
+#: ../duplicity/backends/multibackend.py:154
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: illegal value for %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:166
+=======
+#: ../duplicity/backends/multibackend.py:162
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: Url %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:170
+=======
+#: ../duplicity/backends/multibackend.py:166
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: Could not load config file %s: %s "
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:179
+=======
+#: ../duplicity/backends/multibackend.py:175
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: use store %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:184
+=======
+#: ../duplicity/backends/multibackend.py:180
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: set env %s = %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:197
 #, python-format
 msgid "Multibackend: register affinity for prefix %s"
 msgstr ""
 
 #: ../duplicity/backends/multibackend.py:238
+=======
+#: ../duplicity/backends/multibackend.py:206
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: _put: write to store #%s (%s)"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:251
+=======
+#: ../duplicity/backends/multibackend.py:219
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: failed to write to store #%s (%s), try #%s, Exception: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:258
+=======
+#: ../duplicity/backends/multibackend.py:226
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: failed to write %s. Aborting process."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:265
+=======
+#: ../duplicity/backends/multibackend.py:233
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "MultiBackend: failed to write %s. Tried all backing stores and none succeeded"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:284
+=======
+#: ../duplicity/backends/multibackend.py:250
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: failed to get %s to %s from %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:287
+=======
+#: ../duplicity/backends/multibackend.py:253
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "MultiBackend: failed to get %s. Tried all backing stores and none succeeded"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:296
+=======
+#: ../duplicity/backends/multibackend.py:262
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: list from %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:302
+=======
+#: ../duplicity/backends/multibackend.py:268
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: combined list: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:327
+=======
+#: ../duplicity/backends/multibackend.py:290
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "MultiBackend: failed to delete %s from %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:331
+=======
+#: ../duplicity/backends/multibackend.py:294
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "MultiBackend: failed to delete %s. Tried all backing stores and none "
@@ -1522,16 +2323,25 @@
 "seeing this message"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:216
+=======
+#: ../duplicity/manifest.py:192
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Found manifest volume %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:223
+=======
+#: ../duplicity/manifest.py:199
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Found %s volumes in manifest"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:240
 #, python-format
 msgid ""
@@ -1539,38 +2349,73 @@
 msgstr ""
 
 #: ../duplicity/manifest.py:259
+=======
+#: ../duplicity/manifest.py:213
+>>>>>>> MERGE-SOURCE
 msgid "Manifests not equal because different volume numbers"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:264
+=======
+#: ../duplicity/manifest.py:218
+>>>>>>> MERGE-SOURCE
 msgid "Manifests not equal because volume lists differ"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:269
+=======
+#: ../duplicity/manifest.py:223
+>>>>>>> MERGE-SOURCE
 msgid "Manifests not equal because hosts or directories differ"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:426
+=======
+#: ../duplicity/manifest.py:370
+>>>>>>> MERGE-SOURCE
 msgid "Warning, found extra Volume identifier"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:452
+=======
+#: ../duplicity/manifest.py:396
+>>>>>>> MERGE-SOURCE
 msgid "Other is not VolumeInfo"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:455
+=======
+#: ../duplicity/manifest.py:399
+>>>>>>> MERGE-SOURCE
 msgid "Volume numbers don't match"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:458
+=======
+#: ../duplicity/manifest.py:402
+>>>>>>> MERGE-SOURCE
 msgid "start_indicies don't match"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:461
+=======
+#: ../duplicity/manifest.py:405
+>>>>>>> MERGE-SOURCE
 msgid "end_index don't match"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:468
+=======
+#: ../duplicity/manifest.py:412
+>>>>>>> MERGE-SOURCE
 msgid "Hashes don't match"
 msgstr ""
 
@@ -1657,7 +2502,11 @@
 msgid "GPG process %d terminated before wait()"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/dup_time.py:62
+=======
+#: ../duplicity/dup_time.py:61
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Bad interval string \"%s\"\n"
@@ -1667,7 +2516,11 @@
 "page for more information."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/dup_time.py:68
+=======
+#: ../duplicity/dup_time.py:67
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Bad time string \"%s\"\n"
@@ -1720,12 +2573,20 @@
 msgid "Cleanup of temporary directory %s failed - this is probably a bug."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/util.py:138
+=======
+#: ../duplicity/util.py:95
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "IGNORED_ERROR: Warning: ignoring error as requested: %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/util.py:205
+=======
+#: ../duplicity/util.py:162
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Releasing lockfile %s"
 msgstr ""

=== modified file 'po/el.po'
--- po/el.po	2018-02-25 05:44:50 +0000
+++ po/el.po	2019-05-20 08:57:58 +0000
@@ -6,17 +6,29 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: duplicity\n"
+<<<<<<< TREE
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2018-02-24 06:05+0000\n"
 "PO-Revision-Date: 2018-02-23 13:10+0000\n"
+=======
+"Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
+"POT-Creation-Date: 2018-08-21 10:58-0500\n"
+"PO-Revision-Date: 2010-12-14 18:55+0000\n"
+>>>>>>> MERGE-SOURCE
 "Last-Translator: DimitrisT <Unknown>\n"
 "Language-Team: Greek <el@xxxxxx>\n"
+"Language: el\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
 "X-Launchpad-Export-Date: 2018-02-25 05:44+0000\n"
 "X-Generator: Launchpad (build 18561)\n"
+=======
+"X-Launchpad-Export-Date: 2018-08-12 04:35+0000\n"
+"X-Generator: Launchpad (build 18747)\n"
+>>>>>>> MERGE-SOURCE
 
 #: ../bin/duplicity:133
 msgid "Reuse configured PASSPHRASE as SIGN_PASSPHRASE"
@@ -69,138 +81,248 @@
 "Continuing restart on file %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:331
+=======
+#: ../bin/duplicity:336
+#, python-format
+msgid "Remote filesize %d for %s does not match local size %d, retrying."
+msgstr ""
+
+#: ../bin/duplicity:343
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s was corrupted during upload."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:364
+=======
+#: ../bin/duplicity:376
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Restarting backup, but current encryption settings do not match original "
 "settings"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:387
+=======
+#: ../bin/duplicity:399
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Restarting after volume %s, file %s, block %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:457
+=======
+#: ../bin/duplicity:469
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:606
+=======
+#: ../bin/duplicity:618
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Fatal Error: Unable to start incremental backup.  Old signatures not found "
 "and incremental specified"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:610
+=======
+#: ../bin/duplicity:622
+>>>>>>> MERGE-SOURCE
 msgid "No signatures found, switching to full backup."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:624
+=======
+#: ../bin/duplicity:636
+>>>>>>> MERGE-SOURCE
 msgid "Backup Statistics"
 msgstr "Στατιστικά αντιγράφων ασφαλείας"
 
+<<<<<<< TREE
 #: ../bin/duplicity:730
+=======
+#: ../bin/duplicity:742
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%s not found in archive - no files restored."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:734
+=======
+#: ../bin/duplicity:746
+>>>>>>> MERGE-SOURCE
 msgid "No files found in archive - nothing restored."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:767
+=======
+#: ../bin/duplicity:779
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d of %d"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:801
+=======
+#: ../bin/duplicity:813
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Invalid data - %s hash mismatch for file:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:804
+=======
+#: ../bin/duplicity:816
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Calculated hash: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:805
+=======
+#: ../bin/duplicity:817
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Manifest hash: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:848
+=======
+#: ../bin/duplicity:860
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Volume was signed by key %s, not %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:880
+=======
+#: ../bin/duplicity:892
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Verify complete: %s, %s."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:881
+=======
+#: ../bin/duplicity:893
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d file compared"
 msgid_plural "%d files compared"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:883
+=======
+#: ../bin/duplicity:895
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d difference found"
 msgid_plural "%d differences found"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:902
+=======
+#: ../bin/duplicity:914
+>>>>>>> MERGE-SOURCE
 msgid "No extraneous files found, nothing deleted in cleanup."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:907
+=======
+#: ../bin/duplicity:919
+>>>>>>> MERGE-SOURCE
 msgid "Deleting this file from backend:"
 msgid_plural "Deleting these files from backend:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:918
+=======
+#: ../bin/duplicity:930
+>>>>>>> MERGE-SOURCE
 msgid "Found the following file to delete:"
 msgid_plural "Found the following files to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:921
+=======
+#: ../bin/duplicity:933
+>>>>>>> MERGE-SOURCE
 msgid "Run duplicity again with the --force option to actually delete."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:964
+=======
+#: ../bin/duplicity:976
+>>>>>>> MERGE-SOURCE
 msgid "There are backup set(s) at time(s):"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:966
+=======
+#: ../bin/duplicity:978
+>>>>>>> MERGE-SOURCE
 msgid "Which can't be deleted because newer sets depend on them."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:970
+=======
+#: ../bin/duplicity:982
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Current active backup chain is older than specified time.  However, it will "
 "not be deleted.  To remove all your backups, manually purge the repository."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:983
+=======
+#: ../bin/duplicity:995
+>>>>>>> MERGE-SOURCE
 msgid "No old backup sets found, nothing deleted."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:986
+=======
+#: ../bin/duplicity:998
+>>>>>>> MERGE-SOURCE
 msgid "Deleting backup chain at time:"
 msgid_plural "Deleting backup chains at times:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:998
 #, python-format
 msgid "Deleting any incremental signature chain rooted at %s"
@@ -212,25 +334,51 @@
 msgstr ""
 
 #: ../bin/duplicity:1003
+=======
+#: ../bin/duplicity:1010
+#, python-format
+msgid "Deleting any incremental signature chain rooted at %s"
+msgstr ""
+
+#: ../bin/duplicity:1012
+#, python-format
+msgid "Deleting any incremental backup chain rooted at %s"
+msgstr ""
+
+#: ../bin/duplicity:1015
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete signature chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1005
+=======
+#: ../bin/duplicity:1017
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete backup chain %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1011
+=======
+#: ../bin/duplicity:1023
+>>>>>>> MERGE-SOURCE
 msgid "Found old backup chain at the following time:"
 msgid_plural "Found old backup chains at the following times:"
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1015
+=======
+#: ../bin/duplicity:1027
+>>>>>>> MERGE-SOURCE
 msgid "Rerun command with --force option to actually delete."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1028
 msgid "No old backup sets found."
 msgstr ""
@@ -251,80 +399,143 @@
 msgstr ""
 
 #: ../bin/duplicity:1092
+=======
+#: ../bin/duplicity:1104
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting local %s (not authoritative at backend)."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1097
+=======
+#: ../bin/duplicity:1109
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Unable to delete %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1128 ../duplicity/dup_temp.py:266
+=======
+#: ../bin/duplicity:1140 ../duplicity/dup_temp.py:266
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Failed to read %s: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1142
+=======
+#: ../bin/duplicity:1154
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Copying %s to local cache."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1190
+=======
+#: ../bin/duplicity:1202
+>>>>>>> MERGE-SOURCE
 msgid "Local and Remote metadata are synchronized, no sync needed."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1195
+=======
+#: ../bin/duplicity:1207
+>>>>>>> MERGE-SOURCE
 msgid "Synchronizing remote metadata to local cache..."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1207
+=======
+#: ../bin/duplicity:1219
+>>>>>>> MERGE-SOURCE
 msgid "Sync would copy the following from remote to local:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1210
+=======
+#: ../bin/duplicity:1222
+>>>>>>> MERGE-SOURCE
 msgid "Sync would remove the following spurious local files:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1253
+=======
+#: ../bin/duplicity:1265
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get free space on temp."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1261
+=======
+#: ../bin/duplicity:1273
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp space has %d available, backup needs approx %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1264
+=======
+#: ../bin/duplicity:1276
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp has %d available, backup will use approx %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1272
+=======
+#: ../bin/duplicity:1284
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get max open files."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1276
+=======
+#: ../bin/duplicity:1288
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "Max open files of %s is too low, should be >= 1024.\n"
 "Use 'ulimit -n 1024' or higher to correct.\n"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1327
+=======
+#: ../bin/duplicity:1339
+>>>>>>> MERGE-SOURCE
 msgid ""
 "RESTART: The first volume failed to upload before termination.\n"
 "         Restart is impossible...starting backup from beginning."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1333
+=======
+#: ../bin/duplicity:1345
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Volumes %d to %d failed to upload before termination.\n"
 "         Restarting backup at volume %d."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1340
+=======
+#: ../bin/duplicity:1352
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid ""
 "RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n"
@@ -333,7 +544,11 @@
 "         backup then restart the backup from the beginning."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1361
+=======
+#: ../bin/duplicity:1373
+>>>>>>> MERGE-SOURCE
 msgid ""
 "\n"
 "PYTHONOPTIMIZE in the environment causes duplicity to fail to\n"
@@ -343,54 +558,100 @@
 "See https://bugs.launchpad.net/duplicity/+bug/931175\n";
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1384
 #, python-format
 msgid "Acquiring lockfile %s"
+=======
+#: ../bin/duplicity:1396
+#, python-format
+msgid "Acquiring lockfile %s"
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1442
+=======
+#: ../bin/duplicity:1454
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Last %s backup left a partial set, restarting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1446
+=======
+#: ../bin/duplicity:1458
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Cleaning up previous partial %s backup set, restarting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1458
+=======
+#: ../bin/duplicity:1470
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date:"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1460
+=======
+#: ../bin/duplicity:1472
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date: none"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1462
+=======
+#: ../bin/duplicity:1474
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup is too old, forcing full backup"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1506
+=======
+#: ../bin/duplicity:1518
+>>>>>>> MERGE-SOURCE
 msgid ""
 "When using symmetric encryption, the signing passphrase must equal the "
 "encryption passphrase."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1575
+=======
+#: ../bin/duplicity:1587
+>>>>>>> MERGE-SOURCE
 msgid "INT intercepted...exiting."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1583
+=======
+#: ../bin/duplicity:1595
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "GPG error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1593
+=======
+#: ../bin/duplicity:1605
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "User error detail: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1603
+=======
+#: ../bin/duplicity:1615
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Backend error detail: %s"
 msgstr ""
@@ -484,6 +745,7 @@
 "Use of default filenames is strongly suggested."
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:78
 #, python-format
 msgid ""
@@ -504,6 +766,28 @@
 msgstr ""
 
 #. TRANSL: Used in usage help to represent a Unix-style path name. Example:
+=======
+#: ../duplicity/commandline.py:78
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"--include-filelist and --exclude-filelist now accept globbing characters and "
+"should be used instead."
+msgstr ""
+
+#: ../duplicity/commandline.py:88
+#, python-format
+msgid ""
+"Warning: Option %s is pending deprecation and will be removed in a future "
+"release.\n"
+"On many GNU/Linux systems, stdin is represented by /dev/stdin and\n"
+"--include-filelist=/dev/stdin or --exclude-filelist=/dev/stdin could\n"
+"be used as a substitute."
+msgstr ""
+
+#. Used in usage help to represent a Unix-style path name. Example:
+>>>>>>> MERGE-SOURCE
 #. --archive-dir <path>
 #: ../duplicity/commandline.py:280 ../duplicity/commandline.py:290
 #: ../duplicity/commandline.py:311 ../duplicity/commandline.py:385
@@ -542,8 +826,13 @@
 msgid "filename"
 msgstr "όνομα αρχείου"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent a regular expression (regexp).
 #: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+=======
+#. Used in usage help to represent a regular expression (regexp).
+#: ../duplicity/commandline.py:350 ../duplicity/commandline.py:447
+>>>>>>> MERGE-SOURCE
 msgid "regular_expression"
 msgstr ""
 
@@ -571,8 +860,13 @@
 "not intended"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent an imap mailbox
 #: ../duplicity/commandline.py:432
+=======
+#. Used in usage help to represent an imap mailbox
+#: ../duplicity/commandline.py:432
+>>>>>>> MERGE-SOURCE
 msgid "imap_mailbox"
 msgstr ""
 
@@ -591,11 +885,17 @@
 msgid "number"
 msgstr "αριθμός"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help (noun)
 #: ../duplicity/commandline.py:464
+=======
+#. Used in usage help (noun)
+#: ../duplicity/commandline.py:464
+>>>>>>> MERGE-SOURCE
 msgid "backup name"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/commandline.py:567
 msgid "policy"
 msgstr ""
@@ -603,6 +903,11 @@
 #. TRANSL: noun
 #: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
 #: ../duplicity/commandline.py:768
+=======
+#. noun
+#: ../duplicity/commandline.py:563 ../duplicity/commandline.py:566
+#: ../duplicity/commandline.py:768
+>>>>>>> MERGE-SOURCE
 msgid "command"
 msgstr "εντολή"
 
@@ -614,23 +919,43 @@
 msgid "pem formatted bundle of certificate authorities"
 msgstr ""
 
-#: ../duplicity/commandline.py:591
-msgid "path to a folder with certificate authority files"
-msgstr ""
-
-#. TRANSL: Used in usage help. Example:
-#. --timeout <seconds>
-#. TRANSL: Used in usage help. Example:
-#. --backend-retry-delay <seconds>
-#. TRANSL: Used in usage help. Example:
-#. --timeout <seconds>
-#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
-#: ../duplicity/commandline.py:831
+<<<<<<< TREE
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr ""
+
+#. TRANSL: Used in usage help. Example:
+#. --timeout <seconds>
+#. TRANSL: Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. TRANSL: Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+=======
+#: ../duplicity/commandline.py:591
+msgid "path to a folder with certificate authority files"
+msgstr ""
+
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#. Used in usage help. Example:
+#. --backend-retry-delay <seconds>
+#. Used in usage help. Example:
+#. --timeout <seconds>
+#: ../duplicity/commandline.py:600 ../duplicity/commandline.py:629
+#: ../duplicity/commandline.py:831
+>>>>>>> MERGE-SOURCE
 msgid "seconds"
 msgstr "δευτερόλεπτα"
 
+<<<<<<< TREE
 #. TRANSL: abbreviation for "character" (noun)
 #: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+=======
+#. abbreviation for "character" (noun)
+#: ../duplicity/commandline.py:606 ../duplicity/commandline.py:765
+>>>>>>> MERGE-SOURCE
 msgid "char"
 msgstr "χαρακτήρας"
 
@@ -679,13 +1004,23 @@
 msgid "container_name"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: noun
 #: ../duplicity/commandline.py:776
+=======
+#. noun
+#: ../duplicity/commandline.py:776
+>>>>>>> MERGE-SOURCE
 msgid "count"
 msgstr "υπολογισμός"
 
+<<<<<<< TREE
 #. TRANSL: Used in usage help to represent the name of a file directory
 #: ../duplicity/commandline.py:779
+=======
+#. Used in usage help to represent the name of a file directory
+#: ../duplicity/commandline.py:779
+>>>>>>> MERGE-SOURCE
 msgid "directory"
 msgstr "κατάλογος"
 
@@ -771,6 +1106,7 @@
 msgid "user"
 msgstr "χρήστης"
 
+<<<<<<< TREE
 #. TRANSL: account id for b2. Example: b2://account_id@bucket/
 #: ../duplicity/commandline.py:877
 msgid "account_id"
@@ -784,18 +1120,37 @@
 
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:899
+=======
+#. account id for b2. Example: b2://account_id@bucket/
+#: ../duplicity/commandline.py:877
+msgid "account_id"
+msgstr ""
+
+#. application_key for b2.
+#. Example: b2://account_id:application_key@bucket/
+#: ../duplicity/commandline.py:881
+msgid "application_key"
+msgstr ""
+
+#. Header in usage help
+#: ../duplicity/commandline.py:899
+>>>>>>> MERGE-SOURCE
 msgid "Backends and their URL formats:"
 msgstr ""
 
+<<<<<<< TREE
 #. TRANSL: Header in usage help
 #: ../duplicity/commandline.py:930
+=======
+#. Header in usage help
+#: ../duplicity/commandline.py:930
+>>>>>>> MERGE-SOURCE
 msgid "Commands:"
 msgstr "Εντολές:"
 
 #: ../duplicity/commandline.py:954
 #, python-format
-msgid ""
-"Specified archive directory '%s' does not exist, or is not a directory"
+msgid "Specified archive directory '%s' does not exist, or is not a directory"
 msgstr ""
 
 #: ../duplicity/commandline.py:963
@@ -1083,12 +1438,20 @@
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #. TRANSL: "cleanup" is a hard-coded command, so do not translate it
 #: ../duplicity/collections.py:666
 msgid ""
 "These may be deleted by running duplicity with the \"cleanup\" command."
 msgstr ""
 
+=======
+#. "cleanup" is a hard-coded command, so do not translate it
+#: ../duplicity/collections.py:666
+msgid "These may be deleted by running duplicity with the \"cleanup\" command."
+msgstr ""
+
+>>>>>>> MERGE-SOURCE
 #: ../duplicity/collections.py:669
 msgid "No orphaned or incomplete backup sets found."
 msgstr ""
@@ -1107,9 +1470,14 @@
 msgstr[0] ""
 msgstr[1] ""
 
+<<<<<<< TREE
 #: ../duplicity/collections.py:748
 msgid ""
 "Warning, discarding last backup set, because of missing signature file."
+=======
+#: ../duplicity/collections.py:748
+msgid "Warning, discarding last backup set, because of missing signature file."
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
 #: ../duplicity/collections.py:771
@@ -1250,6 +1618,7 @@
 msgid "Connection failed, please check your password: %s"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/backends/multibackend.py:85
 #, python-format
 msgid "MultiBackend: Could not parse query string %s: %s "
@@ -1495,6 +1864,247 @@
 msgid ""
 "basis_file must be a (true) file or an object whose file attribute is the "
 "underlying true file object"
+=======
+#: ../duplicity/backends/multibackend.py:85
+#, python-format
+msgid "MultiBackend: Could not parse query string %s: %s "
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:94
+#, python-format
+msgid "MultiBackend: Invalid query string %s: more than one value for %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:99
+#, python-format
+msgid "MultiBackend: Invalid query string %s: unknown parameter %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:149
+#: ../duplicity/backends/multibackend.py:154
+#, python-format
+msgid "MultiBackend: illegal value for %s: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:162
+#, python-format
+msgid "MultiBackend: Url %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:166
+#, python-format
+msgid "MultiBackend: Could not load config file %s: %s "
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:175
+#, python-format
+msgid "MultiBackend: use store %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:180
+#, python-format
+msgid "MultiBackend: set env %s = %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:206
+#, python-format
+msgid "MultiBackend: _put: write to store #%s (%s)"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:219
+#, python-format
+msgid "MultiBackend: failed to write to store #%s (%s), try #%s, Exception: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:226
+#, python-format
+msgid "MultiBackend: failed to write %s. Aborting process."
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:233
+#, python-format
+msgid ""
+"MultiBackend: failed to write %s. Tried all backing stores and none succeeded"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:250
+#, python-format
+msgid "MultiBackend: failed to get %s to %s from %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:253
+#, python-format
+msgid ""
+"MultiBackend: failed to get %s. Tried all backing stores and none succeeded"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:262
+#, python-format
+msgid "MultiBackend: list from %s: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:268
+#, python-format
+msgid "MultiBackend: combined list: %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:290
+#, python-format
+msgid "MultiBackend: failed to delete %s from %s"
+msgstr ""
+
+#: ../duplicity/backends/multibackend.py:294
+#, python-format
+msgid ""
+"MultiBackend: failed to delete %s. Tried all backing stores and none "
+"succeeded"
+msgstr ""
+
+#: ../duplicity/backends/pydrivebackend.py:143
+#, python-format
+msgid "PyDrive backend: multiple files called '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:61
+msgid "Missing socket or ssl python modules."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:79
+#, python-format
+msgid "Cacert database file '%s' is not readable."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:100
+msgid ""
+"Option '--ssl-cacert-path' is not supported with python 2.7.8 and below."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:104
+#, python-format
+msgid ""
+"For certificate verification with python 2.7.8 or earlier a cacert database\n"
+"file is needed in one of these locations: %s\n"
+"Hints:\n"
+"  Consult the man page, chapter 'SSL Certificate Verification'.\n"
+"  Consider using the options --ssl-cacert-file, --ssl-no-check-certificate ."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:150
+#, python-format
+msgid "Using WebDAV protocol %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:151
+#, python-format
+msgid "Using WebDAV host %s port %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:153
+#, python-format
+msgid "Using WebDAV directory %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:184
+#, python-format
+msgid "WebDAV create connection on '%s'"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:195
+#, python-format
+msgid "WebDAV Unknown URI scheme: %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:214
+#, python-format
+msgid "WebDAV %s %s request with headers: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:215
+#: ../duplicity/backends/webdavbackend.py:238
+#, python-format
+msgid "WebDAV data length: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:218
+#, python-format
+msgid "WebDAV response status %s with reason '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:224
+#, python-format
+msgid "WebDAV redirect to: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:226
+msgid "WebDAV redirected 10 times. Giving up."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:231
+msgid "WebDAV missing location header in redirect response."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:236
+msgid "WebDAV retry request with authentification headers."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:237
+#, python-format
+msgid "WebDAV %s %s request2 with headers: %s "
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:241
+#, python-format
+msgid "WebDAV response2 status %s with reason '%s'."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:258
+msgid ""
+"python-kerberos needed to use kerberos                           "
+"authorization, falling back to basic auth."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:262
+#, python-format
+msgid ""
+"Kerberos authorization failed: %s.                          Falling back to "
+"basic auth."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:360
+#, python-format
+msgid "Creating missing directory %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:364
+#, python-format
+msgid "WebDAV MKCOL %s failed: %s %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:377
+#, python-format
+msgid "WebDAV path decoding and translation: %s -> %s"
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:422
+#, python-format
+msgid "WebDAV GET Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:444
+#, python-format
+msgid "WebDAV PUT Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/backends/webdavbackend.py:464
+#, python-format
+msgid "WebDAV DEL Bad status code %s reason %s."
+msgstr ""
+
+#: ../duplicity/librsync.py:184
+msgid ""
+"basis_file must be a (true) file or an object whose file attribute is the "
+"underlying true file object"
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
 #: ../duplicity/manifest.py:91
@@ -1521,6 +2131,7 @@
 "seeing this message"
 msgstr ""
 
+<<<<<<< TREE
 #: ../duplicity/manifest.py:192
 #, python-format
 msgid "Found manifest volume %s"
@@ -1538,6 +2149,19 @@
 msgstr ""
 
 #: ../duplicity/manifest.py:213
+=======
+#: ../duplicity/manifest.py:192
+#, python-format
+msgid "Found manifest volume %s"
+msgstr ""
+
+#: ../duplicity/manifest.py:199
+#, python-format
+msgid "Found %s volumes in manifest"
+msgstr ""
+
+#: ../duplicity/manifest.py:213
+>>>>>>> MERGE-SOURCE
 msgid "Manifests not equal because different volume numbers"
 msgstr ""
 

=== modified file 'po/en_AU.po'
--- po/en_AU.po	2018-02-25 05:44:50 +0000
+++ po/en_AU.po	2019-05-20 08:57:58 +0000
@@ -6,17 +6,30 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: duplicity\n"
+<<<<<<< TREE
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2018-02-24 06:05+0000\n"
 "PO-Revision-Date: 2018-02-23 13:10+0000\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+=======
+"Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
+"POT-Creation-Date: 2018-08-21 10:58-0500\n"
+"PO-Revision-Date: 2014-04-29 08:07+0000\n"
+"Last-Translator: Kenneth Loafman <kenneth@xxxxxxxxxxx>\n"
+>>>>>>> MERGE-SOURCE
 "Language-Team: English (Australia) <en_AU@xxxxxx>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
 "X-Launchpad-Export-Date: 2018-02-25 05:44+0000\n"
 "X-Generator: Launchpad (build 18561)\n"
+=======
+"X-Launchpad-Export-Date: 2018-08-12 04:35+0000\n"
+"X-Generator: Launchpad (build 18747)\n"
+>>>>>>> MERGE-SOURCE
 
 #: ../bin/duplicity:133
 msgid "Reuse configured PASSPHRASE as SIGN_PASSPHRASE"
@@ -50,6 +63,7 @@
 msgid "First and second passphrases do not match!  Please try again."
 msgstr "First and second passphrases do not match!  Please try again."
 
+<<<<<<< TREE
 #: ../bin/duplicity:216
 msgid ""
 "Cannot use empty passphrase with symmetric encryption!  Please try again."
@@ -75,11 +89,47 @@
 "Continuing restart on file %s."
 
 #: ../bin/duplicity:331
+=======
+#: ../bin/duplicity:216
+msgid ""
+"Cannot use empty passphrase with symmetric encryption!  Please try again."
+msgstr ""
+"Cannot use empty passphrase with symmetric encryption!  Please try again."
+
+#: ../bin/duplicity:273
+#, python-format
+msgid ""
+"File %s complete in backup set.\n"
+"Continuing restart on file %s."
+msgstr ""
+"File %s complete in backup set.\n"
+"Continuing restart on file %s."
+
+#: ../bin/duplicity:282
+#, python-format
+msgid ""
+"File %s missing in backup set.\n"
+"Continuing restart on file %s."
+msgstr ""
+"File %s missing in backup set.\n"
+"Continuing restart on file %s."
+
+#: ../bin/duplicity:336
+#, python-format
+msgid "Remote filesize %d for %s does not match local size %d, retrying."
+msgstr ""
+
+#: ../bin/duplicity:343
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "File %s was corrupted during upload."
 msgstr "File %s was corrupted during upload."
 
+<<<<<<< TREE
 #: ../bin/duplicity:364
+=======
+#: ../bin/duplicity:376
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Restarting backup, but current encryption settings do not match original "
 "settings"
@@ -87,17 +137,29 @@
 "Restarting backup, but current encryption settings do not match original "
 "settings"
 
+<<<<<<< TREE
 #: ../bin/duplicity:387
+=======
+#: ../bin/duplicity:399
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Restarting after volume %s, file %s, block %s"
 msgstr "Restarting after volume %s, file %s, block %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:457
+=======
+#: ../bin/duplicity:469
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d"
 msgstr "Processed volume %d"
 
+<<<<<<< TREE
 #: ../bin/duplicity:606
+=======
+#: ../bin/duplicity:618
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Fatal Error: Unable to start incremental backup.  Old signatures not found "
 "and incremental specified"
@@ -105,96 +167,172 @@
 "Fatal Error: Unable to start incremental backup.  Old signatures not found "
 "and incremental specified"
 
+<<<<<<< TREE
 #: ../bin/duplicity:610
+=======
+#: ../bin/duplicity:622
+>>>>>>> MERGE-SOURCE
 msgid "No signatures found, switching to full backup."
 msgstr "No signatures found, switching to full backup."
 
+<<<<<<< TREE
 #: ../bin/duplicity:624
+=======
+#: ../bin/duplicity:636
+>>>>>>> MERGE-SOURCE
 msgid "Backup Statistics"
 msgstr "Backup Statistics"
 
+<<<<<<< TREE
 #: ../bin/duplicity:730
+=======
+#: ../bin/duplicity:742
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%s not found in archive - no files restored."
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:734
+=======
+#: ../bin/duplicity:746
+>>>>>>> MERGE-SOURCE
 msgid "No files found in archive - nothing restored."
 msgstr "No files found in archive - nothing restored."
 
+<<<<<<< TREE
 #: ../bin/duplicity:767
+=======
+#: ../bin/duplicity:779
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Processed volume %d of %d"
 msgstr "Processed volume %d of %d"
 
+<<<<<<< TREE
 #: ../bin/duplicity:801
+=======
+#: ../bin/duplicity:813
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Invalid data - %s hash mismatch for file:"
 msgstr "Invalid data - %s hash mismatch for file:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:804
+=======
+#: ../bin/duplicity:816
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Calculated hash: %s"
 msgstr "Calculated hash: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:805
+=======
+#: ../bin/duplicity:817
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Manifest hash: %s"
 msgstr "Manifest hash: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:848
+=======
+#: ../bin/duplicity:860
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Volume was signed by key %s, not %s"
 msgstr "Volume was signed by key %s, not %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:880
+=======
+#: ../bin/duplicity:892
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Verify complete: %s, %s."
 msgstr "Verify complete: %s, %s."
 
+<<<<<<< TREE
 #: ../bin/duplicity:881
+=======
+#: ../bin/duplicity:893
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d file compared"
 msgid_plural "%d files compared"
 msgstr[0] "%d file compared"
 msgstr[1] "%d files compared"
 
+<<<<<<< TREE
 #: ../bin/duplicity:883
+=======
+#: ../bin/duplicity:895
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "%d difference found"
 msgid_plural "%d differences found"
 msgstr[0] "%d difference found"
 msgstr[1] "%d differences found"
 
+<<<<<<< TREE
 #: ../bin/duplicity:902
+=======
+#: ../bin/duplicity:914
+>>>>>>> MERGE-SOURCE
 msgid "No extraneous files found, nothing deleted in cleanup."
 msgstr "No extraneous files found, nothing deleted in cleanup."
 
+<<<<<<< TREE
 #: ../bin/duplicity:907
+=======
+#: ../bin/duplicity:919
+>>>>>>> MERGE-SOURCE
 msgid "Deleting this file from backend:"
 msgid_plural "Deleting these files from backend:"
 msgstr[0] "Deleting this file from backend:"
 msgstr[1] "Deleting these files from backend:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:918
+=======
+#: ../bin/duplicity:930
+>>>>>>> MERGE-SOURCE
 msgid "Found the following file to delete:"
 msgid_plural "Found the following files to delete:"
 msgstr[0] "Found the following file to delete:"
 msgstr[1] "Found the following files to delete:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:921
+=======
+#: ../bin/duplicity:933
+>>>>>>> MERGE-SOURCE
 msgid "Run duplicity again with the --force option to actually delete."
 msgstr "Run duplicity again with the --force option to actually delete."
 
+<<<<<<< TREE
 #: ../bin/duplicity:964
+=======
+#: ../bin/duplicity:976
+>>>>>>> MERGE-SOURCE
 msgid "There are backup set(s) at time(s):"
 msgstr "There are backup set(s) at time(s):"
 
+<<<<<<< TREE
 #: ../bin/duplicity:966
+=======
+#: ../bin/duplicity:978
+>>>>>>> MERGE-SOURCE
 msgid "Which can't be deleted because newer sets depend on them."
 msgstr "Which can't be deleted because newer sets depend on them."
 
+<<<<<<< TREE
 #: ../bin/duplicity:970
+=======
+#: ../bin/duplicity:982
+>>>>>>> MERGE-SOURCE
 msgid ""
 "Current active backup chain is older than specified time.  However, it will "
 "not be deleted.  To remove all your backups, manually purge the repository."
@@ -202,16 +340,25 @@
 "Current active backup chain is older than specified time.  However, it will "
 "not be deleted.  To remove all your backups, manually purge the repository."
 
+<<<<<<< TREE
 #: ../bin/duplicity:983
+=======
+#: ../bin/duplicity:995
+>>>>>>> MERGE-SOURCE
 msgid "No old backup sets found, nothing deleted."
 msgstr "No old backup sets found, nothing deleted."
 
+<<<<<<< TREE
 #: ../bin/duplicity:986
+=======
+#: ../bin/duplicity:998
+>>>>>>> MERGE-SOURCE
 msgid "Deleting backup chain at time:"
 msgid_plural "Deleting backup chains at times:"
 msgstr[0] "Deleting backup chain at time:"
 msgstr[1] "Deleting backup chains at times:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:998
 #, python-format
 msgid "Deleting any incremental signature chain rooted at %s"
@@ -223,25 +370,51 @@
 msgstr ""
 
 #: ../bin/duplicity:1003
+=======
+#: ../bin/duplicity:1010
+#, python-format
+msgid "Deleting any incremental signature chain rooted at %s"
+msgstr ""
+
+#: ../bin/duplicity:1012
+#, python-format
+msgid "Deleting any incremental backup chain rooted at %s"
+msgstr ""
+
+#: ../bin/duplicity:1015
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete signature chain %s"
 msgstr "Deleting complete signature chain %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1005
+=======
+#: ../bin/duplicity:1017
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting complete backup chain %s"
 msgstr "Deleting complete backup chain %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1011
+=======
+#: ../bin/duplicity:1023
+>>>>>>> MERGE-SOURCE
 msgid "Found old backup chain at the following time:"
 msgid_plural "Found old backup chains at the following times:"
 msgstr[0] "Found old backup chain at the following time:"
 msgstr[1] "Found old backup chains at the following times:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1015
+=======
+#: ../bin/duplicity:1027
+>>>>>>> MERGE-SOURCE
 msgid "Rerun command with --force option to actually delete."
 msgstr "Rerun command with --force option to actually delete."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1028
 msgid "No old backup sets found."
 msgstr ""
@@ -262,59 +435,107 @@
 msgstr ""
 
 #: ../bin/duplicity:1092
+=======
+#: ../bin/duplicity:1104
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Deleting local %s (not authoritative at backend)."
 msgstr "Deleting local %s (not authoritative at backend)."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1097
+=======
+#: ../bin/duplicity:1109
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Unable to delete %s: %s"
 msgstr "Unable to delete %s: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1128 ../duplicity/dup_temp.py:266
+=======
+#: ../bin/duplicity:1140 ../duplicity/dup_temp.py:266
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Failed to read %s: %s"
 msgstr "Failed to read %s: %s"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1142
+=======
+#: ../bin/duplicity:1154
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Copying %s to local cache."
 msgstr "Copying %s to local cache."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1190
+=======
+#: ../bin/duplicity:1202
+>>>>>>> MERGE-SOURCE
 msgid "Local and Remote metadata are synchronized, no sync needed."
 msgstr "Local and Remote metadata are synchronised, no sync needed."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1195
+=======
+#: ../bin/duplicity:1207
+>>>>>>> MERGE-SOURCE
 msgid "Synchronizing remote metadata to local cache..."
 msgstr "Synchronising remote metadata to local cache..."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1207
+=======
+#: ../bin/duplicity:1219
+>>>>>>> MERGE-SOURCE
 msgid "Sync would copy the following from remote to local:"
 msgstr "Sync would copy the following from remote to local:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1210
+=======
+#: ../bin/duplicity:1222
+>>>>>>> MERGE-SOURCE
 msgid "Sync would remove the following spurious local files:"
 msgstr "Sync would remove the following spurious local files:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1253
+=======
+#: ../bin/duplicity:1265
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get free space on temp."
 msgstr "Unable to get free space on temp."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1261
+=======
+#: ../bin/duplicity:1273
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp space has %d available, backup needs approx %d."
 msgstr "Temp space has %d available, backup needs approx %d."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1264
+=======
+#: ../bin/duplicity:1276
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Temp has %d available, backup will use approx %d."
 msgstr "Temp has %d available, backup will use approx %d."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1272
+=======
+#: ../bin/duplicity:1284
+>>>>>>> MERGE-SOURCE
 msgid "Unable to get max open files."
 msgstr "Unable to get max open files."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1276
 #, python-format
 msgid ""
@@ -355,6 +576,48 @@
 "         backup then restart the backup from the beginning."
 
 #: ../bin/duplicity:1361
+=======
+#: ../bin/duplicity:1288
+#, python-format
+msgid ""
+"Max open files of %s is too low, should be >= 1024.\n"
+"Use 'ulimit -n 1024' or higher to correct.\n"
+msgstr ""
+"Max open files of %s is too low, should be >= 1024.\n"
+"Use 'ulimit -n 1024' or higher to correct.\n"
+
+#: ../bin/duplicity:1339
+msgid ""
+"RESTART: The first volume failed to upload before termination.\n"
+"         Restart is impossible...starting backup from beginning."
+msgstr ""
+"RESTART: The first volume failed to upload before termination.\n"
+"         Restart is impossible...starting backup from beginning."
+
+#: ../bin/duplicity:1345
+#, python-format
+msgid ""
+"RESTART: Volumes %d to %d failed to upload before termination.\n"
+"         Restarting backup at volume %d."
+msgstr ""
+"RESTART: Volumes %d to %d failed to upload before termination.\n"
+"         Restarting backup at volume %d."
+
+#: ../bin/duplicity:1352
+#, python-format
+msgid ""
+"RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n"
+"         Restart is impossible ... duplicity will clean off the last "
+"partial\n"
+"         backup then restart the backup from the beginning."
+msgstr ""
+"RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n"
+"         Restart is impossible ... duplicity will clean off the last "
+"partial\n"
+"         backup then restart the backup from the beginning."
+
+#: ../bin/duplicity:1373
+>>>>>>> MERGE-SOURCE
 msgid ""
 "\n"
 "PYTHONOPTIMIZE in the environment causes duplicity to fail to\n"
@@ -370,34 +633,64 @@
 "\n"
 "See https://bugs.launchpad.net/duplicity/+bug/931175\n";
 
+<<<<<<< TREE
 #: ../bin/duplicity:1384
 #, python-format
 msgid "Acquiring lockfile %s"
+=======
+#: ../bin/duplicity:1396
+#, python-format
+msgid "Acquiring lockfile %s"
+>>>>>>> MERGE-SOURCE
 msgstr ""
 
+<<<<<<< TREE
 #: ../bin/duplicity:1442
+=======
+#: ../bin/duplicity:1454
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Last %s backup left a partial set, restarting."
 msgstr "Last %s backup left a partial set, restarting."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1446
+=======
+#: ../bin/duplicity:1458
+>>>>>>> MERGE-SOURCE
 #, python-format
 msgid "Cleaning up previous partial %s backup set, restarting."
 msgstr "Cleaning up previous partial %s backup set, restarting."
 
+<<<<<<< TREE
 #: ../bin/duplicity:1458
+=======
+#: ../bin/duplicity:1470
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date:"
 msgstr "Last full backup date:"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1460
+=======
+#: ../bin/duplicity:1472
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup date: none"
 msgstr "Last full backup date: none"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1462
+=======
+#: ../bin/duplicity:1474
+>>>>>>> MERGE-SOURCE
 msgid "Last full backup is too old, forcing full backup"
 msgstr "Last full backup is too old, forcing full backup"
 
+<<<<<<< TREE
 #: ../bin/duplicity:1506
+=======
+#: ../bin/duplicity:1518
+>>>>>>> MERGE-SOURCE
 msgid ""
 "When using symmetric encryption, the signing passphrase must equal the "
 "encryption passphrase."
@@ -405,21 +698,37 @@
 "When using symmetri