Hello community,
here is the log from the commit of package duplicity for openSUSE:Factory checked in at 2019-05-02 19:19:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/duplicity (Old)
and /work/SRC/openSUSE:Factory/.duplicity.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "duplicity"
Thu May 2 19:19:28 2019 rev:44 rq:699772 version:0.7.19
Changes:
--------
--- /work/SRC/openSUSE:Factory/duplicity/duplicity.changes 2018-10-22 11:24:17.535098906 +0200
+++ /work/SRC/openSUSE:Factory/.duplicity.new.5148/duplicity.changes 2019-05-02 19:19:33.801659399 +0200
@@ -1,0 +2,25 @@
+Tue Apr 30 10:54:15 UTC 2019 - mvetter@suse.com
+
+- Update to 0.7.19:
+ * Fixed bug #1798206 and bug #1798504
+ - Made paramiko a global with import during __init__ so it would
+ j 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.
+- Update duplicity-remove_shebang.patch
+
+-------------------------------------------------------------------
Old:
----
duplicity-0.7.18.2.tar.gz
New:
----
duplicity-0.7.19.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ duplicity.spec ++++++
--- /var/tmp/diff_new_pack.Za0L5e/_old 2019-05-02 19:19:34.573660757 +0200
+++ /var/tmp/diff_new_pack.Za0L5e/_new 2019-05-02 19:19:34.573660757 +0200
@@ -1,7 +1,7 @@
#
# spec file for package duplicity
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: duplicity
-Version: 0.7.18.2
+Version: 0.7.19
Release: 0
Summary: Encrypted bandwidth-efficient backup using the rsync algorithm
License: GPL-3.0-or-later
++++++ duplicity-0.7.18.2.tar.gz -> duplicity-0.7.19.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/CHANGELOG new/duplicity-0.7.19/CHANGELOG
--- old/duplicity-0.7.18.2/CHANGELOG 2018-10-17 17:24:19.000000000 +0200
+++ new/duplicity-0.7.19/CHANGELOG 2019-04-29 17:46:58.000000000 +0200
@@ -1,5 +1,26 @@
-New in v0.7.19 (2018/10/17)
----------------------------
+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.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/Changelog.GNU new/duplicity-0.7.19/Changelog.GNU
--- old/duplicity-0.7.18.2/Changelog.GNU 2018-10-17 17:27:04.000000000 +0200
+++ new/duplicity-0.7.19/Changelog.GNU 2019-04-27 19:12:26.000000000 +0200
@@ -1,3 +1,28 @@
+2019-04-27 Kenneth Loafman
+
+ * 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
+
+ * 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
+
+ * 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
* Prep for 0.7.18.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/bin/duplicity new/duplicity-0.7.19/bin/duplicity
--- old/duplicity-0.7.18.2/bin/duplicity 2018-10-17 17:28:13.000000000 +0200
+++ new/duplicity-0.7.19/bin/duplicity 2019-04-29 17:49:23.000000000 +0200
@@ -2,7 +2,7 @@
# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-
#
# duplicity -- Encrypted bandwidth efficient backup
-# Version 0.7.18.2 released October 17, 2018
+# Version 0.7.19 released April 29, 2019
#
# Copyright 2002 Ben Escoto
# Copyright 2007 Kenneth Loafman
@@ -1020,7 +1020,7 @@
_("Rerun command with --force option to actually delete."))
-def sync_archive():
+def sync_archive(col_stats):
"""
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
@@ -1031,6 +1031,27 @@
"""
suffixes = [".g", ".gpg", ".z", ".gz", ".part"]
+ 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
+ return parsed.end_time >= target_chain.start_time and \
+ parsed.start_time <= target_chain.end_time
+
def get_metafiles(filelist):
"""
Return metafiles of interest from the file list.
@@ -1180,7 +1201,7 @@
# already have a local partial. The local partial will already be
# complete in this case (seems we got interrupted before we could move
# it to its final location).
- if key not in local_keys and key not in local_partials:
+ if key not in local_keys and key not in local_partials and is_needed(key):
local_missing.append(remote_metafiles[key])
for key in local_keys:
@@ -1288,7 +1309,7 @@
log Python, duplicity, and system versions
"""
log.Log(u'=' * 80, verbosity)
- log.Log(u"duplicity 0.7.18.2 (October 17, 2018)", verbosity)
+ log.Log(u"duplicity 0.7.19 (April 29, 2019)", verbosity)
log.Log(u"Args: %s" % util.ufn(' '.join(sys.argv)), verbosity)
log.Log(u' '.join(platform.uname()), verbosity)
log.Log(u"%s %s" % (sys.executable or sys.platform, sys.version), verbosity)
@@ -1414,15 +1435,15 @@
# check for disk space and available file handles
check_resources(action)
- # check archive synch with remote, fix if needed
- if action not in ["collection-status"]:
- sync_archive()
-
# get current collection status
col_stats = collections.CollectionsStatus(globals.backend,
globals.archive_dir,
action).set_values()
+ # check archive synch with remote, fix if needed
+ if action not in ["collection-status"]:
+ sync_archive(col_stats)
+
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.
@@ -1488,7 +1509,7 @@
elif action == "remove-all-but-n-full" or action == "remove-all-inc-of-but-n-full":
remove_all_but_n_full(col_stats)
elif action == "sync":
- sync_archive()
+ sync_archive(col_stats)
else:
assert action == "inc" or action == "full", action
# the passphrase for full and inc is used by --sign-key
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/bin/duplicity.1 new/duplicity-0.7.19/bin/duplicity.1
--- old/duplicity-0.7.18.2/bin/duplicity.1 2018-10-17 17:28:13.000000000 +0200
+++ new/duplicity-0.7.19/bin/duplicity.1 2019-04-29 17:49:23.000000000 +0200
@@ -1,4 +1,4 @@
-.TH DUPLICITY 1 "October 17, 2018" "Version 0.7.18.2" "User Manuals" \" -*- nroff -*-
+.TH DUPLICITY 1 "April 29, 2019" "Version 0.7.19" "User Manuals" \" -*- nroff -*-
.\" disable justification (adjust text to left margin only)
.\" command line examples stay readable through that
.ad l
@@ -882,6 +882,14 @@
.BR "A NOTE ON SSL CERTIFICATE VERIFICATION" .
.TP
+.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 "--tempdir " directory
Use this existing directory for duplicity temporary files instead of
the system default, which is usually the /tmp directory. This option
@@ -1044,12 +1052,6 @@
.B "A NOTE ON CLOUD FILES ACCESS"
.RE
.PP
-.B "Copy cloud storage"
-.PP
-.RS
-copy://user[:password]@copy.com/some_dir
-.RE
-.PP
.B Dropbox
.PP
.RS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/bin/rdiffdir new/duplicity-0.7.19/bin/rdiffdir
--- old/duplicity-0.7.18.2/bin/rdiffdir 2018-10-17 17:28:13.000000000 +0200
+++ new/duplicity-0.7.19/bin/rdiffdir 2019-04-29 17:49:23.000000000 +0200
@@ -1,6 +1,6 @@
#!/usr/bin/env python2
# rdiffdir -- Extend rdiff functionality to directories
-# Version 0.7.18.2 released October 17, 2018
+# Version 0.7.19 released April 29, 2019
#
# Copyright 2002 Ben Escoto
# Copyright 2007 Kenneth Loafman
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/bin/rdiffdir.1 new/duplicity-0.7.19/bin/rdiffdir.1
--- old/duplicity-0.7.18.2/bin/rdiffdir.1 2018-10-17 17:28:13.000000000 +0200
+++ new/duplicity-0.7.19/bin/rdiffdir.1 2019-04-29 17:49:23.000000000 +0200
@@ -1,4 +1,4 @@
-.TH RDIFFDIR 1 "October 17, 2018" "Version 0.7.18.2" "User Manuals" \" -*- nroff -*-
+.TH RDIFFDIR 1 "April 29, 2019" "Version 0.7.19" "User Manuals" \" -*- nroff -*-
.\" disable justification (adjust text to left margin only)
.\" command line examples stay readable through that
.ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/duplicity/backends/pydrivebackend.py new/duplicity-0.7.19/duplicity/backends/pydrivebackend.py
--- old/duplicity-0.7.18.2/duplicity/backends/pydrivebackend.py 2017-11-01 13:27:41.000000000 +0100
+++ new/duplicity-0.7.19/duplicity/backends/pydrivebackend.py 2019-02-25 17:17:27.000000000 +0100
@@ -92,6 +92,7 @@
file_in_root = self.drive.CreateFile({'title': 'i_am_in_root'})
file_in_root.Upload()
parent_folder_id = file_in_root['parents'][0]['id']
+ file_in_root.Delete()
# Fetch destination folder entry and create hierarchy if required.
folder_names = string.split(parsed_url.path, '/')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/duplicity/backends/ssh_paramiko_backend.py new/duplicity-0.7.19/duplicity/backends/ssh_paramiko_backend.py
--- old/duplicity-0.7.18.2/duplicity/backends/ssh_paramiko_backend.py 2018-08-21 17:56:57.000000000 +0200
+++ new/duplicity-0.7.19/duplicity/backends/ssh_paramiko_backend.py 2018-12-17 18:07:56.000000000 +0100
@@ -37,6 +37,9 @@
from duplicity import log
from duplicity.errors import BackendException
+global paramiko
+
+
read_blocksize = 65635 # for doing scp retrievals, where we need to read ourselves
@@ -61,6 +64,8 @@
This problem does not exist with sftp.
"""
def __init__(self, parsed_url):
+ global paramiko
+
duplicity.backend.Backend.__init__(self, parsed_url)
self.retry_delay = 10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/duplicity/commandline.py new/duplicity-0.7.19/duplicity/commandline.py
--- old/duplicity-0.7.18.2/duplicity/commandline.py 2018-02-01 17:55:59.000000000 +0100
+++ new/duplicity-0.7.19/duplicity/commandline.py 2019-04-27 18:56:44.000000000 +0200
@@ -491,6 +491,11 @@
callback=lambda o, s, v, p: (setattr(p.values, o.dest, True),
old_fn_deprecation(s)))
+ # Sync only required metadata
+ parser.add_option("--metadata-sync-mode",
+ default="full",
+ choices=("full", "partial"))
+
# Level of Redundancy in % for Par2 files
parser.add_option("--par2-redundancy", type="int", metavar=_("number"))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/duplicity/globals.py new/duplicity-0.7.19/duplicity/globals.py
--- old/duplicity-0.7.18.2/duplicity/globals.py 2018-10-17 17:28:13.000000000 +0200
+++ new/duplicity-0.7.19/duplicity/globals.py 2019-04-29 17:49:23.000000000 +0200
@@ -27,7 +27,7 @@
# The current version of duplicity
-version = "0.7.18.2"
+version = "0.7.19"
# Prefix for all files (appended before type-specific prefixes)
file_prefix = ""
@@ -225,6 +225,9 @@
# Can be changed with a command line argument.
imap_mailbox = "INBOX"
+# Sync all metadata by default
+metadata_sync_mode = "full"
+
# Whether the old filename format is in effect.
old_filenames = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/po/duplicity.pot new/duplicity-0.7.19/po/duplicity.pot
--- old/duplicity-0.7.18.2/po/duplicity.pot 2018-09-28 15:58:20.000000000 +0200
+++ new/duplicity-0.7.19/po/duplicity.pot 2019-04-29 17:36:54.000000000 +0200
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: Kenneth Loafman \n"
-"POT-Creation-Date: 2018-09-28 08:58-0500\n"
+"POT-Creation-Date: 2018-12-16 11:10-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.18.2/setup.py new/duplicity-0.7.19/setup.py
--- old/duplicity-0.7.18.2/setup.py 2018-10-17 17:28:13.000000000 +0200
+++ new/duplicity-0.7.19/setup.py 2019-04-29 17:49:23.000000000 +0200
@@ -28,7 +28,7 @@
from setuptools.command.sdist import sdist
from distutils.command.build_scripts import build_scripts
-version_string = "0.7.18.2"
+version_string = "0.7.19"
if sys.version_info[:2] < (2, 6) or sys.version_info[:2] > (2, 7):
print("Sorry, duplicity requires version 2.6 or 2.7 of python.")
++++++ duplicity-remove_shebang.patch ++++++
--- /var/tmp/diff_new_pack.Za0L5e/_old 2019-05-02 19:19:34.761661088 +0200
+++ /var/tmp/diff_new_pack.Za0L5e/_new 2019-05-02 19:19:34.761661088 +0200
@@ -1,24 +1,24 @@
-diff -urEbwB duplicity-0.7.18.2/bin/duplicity duplicity-0.7.18.2.new/bin/duplicity
---- duplicity-0.7.18.2/bin/duplicity 2018-10-17 17:28:13.000000000 +0200
-+++ duplicity-0.7.18.2.new/bin/duplicity 2018-10-19 12:40:15.105162150 +0200
+diff -urEbwB duplicity-0.7.19/bin/duplicity duplicity-0.7.19.new/bin/duplicity
+--- duplicity-0.7.19/bin/duplicity 2019-04-29 17:49:23.000000000 +0200
++++ duplicity-0.7.19.new/bin/duplicity 2019-04-30 12:59:15.447186950 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/python
# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-
#
# duplicity -- Encrypted bandwidth efficient backup
-diff -urEbwB duplicity-0.7.18.2/bin/rdiffdir duplicity-0.7.18.2.new/bin/rdiffdir
---- duplicity-0.7.18.2/bin/rdiffdir 2018-10-17 17:28:13.000000000 +0200
-+++ duplicity-0.7.18.2.new/bin/rdiffdir 2018-10-19 12:40:38.361254545 +0200
+diff -urEbwB duplicity-0.7.19/bin/rdiffdir duplicity-0.7.19.new/bin/rdiffdir
+--- duplicity-0.7.19/bin/rdiffdir 2019-04-29 17:49:23.000000000 +0200
++++ duplicity-0.7.19.new/bin/rdiffdir 2019-04-30 12:59:36.219276912 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/python
# rdiffdir -- Extend rdiff functionality to directories
- # Version 0.7.18.2 released October 17, 2018
+ # Version 0.7.19 released April 29, 2019
#
-diff -urEbwB duplicity-0.7.18.2/duplicity/compilec.py duplicity-0.7.18.2.new/duplicity/compilec.py
---- duplicity-0.7.18.2/duplicity/compilec.py 2017-08-06 18:25:09.000000000 +0200
-+++ duplicity-0.7.18.2.new/duplicity/compilec.py 2018-10-19 12:41:11.401385871 +0200
+diff -urEbwB duplicity-0.7.19/duplicity/compilec.py duplicity-0.7.19.new/duplicity/compilec.py
+--- duplicity-0.7.19/duplicity/compilec.py 2017-08-06 18:25:09.000000000 +0200
++++ duplicity-0.7.19.new/duplicity/compilec.py 2019-04-30 13:00:05.903405462 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/python