diff options
author | bescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2003-11-01 07:16:26 +0000 |
---|---|---|
committer | bescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2003-11-01 07:16:26 +0000 |
commit | 4314c994485301ba8742c5f0ba17402b656122c7 (patch) | |
tree | 9ba1c840d5578e21ecad005d3438ba5c2b09c9fc /rdiff-backup | |
parent | f0b05c70b433eb60540145c6e4df761516f9ea12 (diff) | |
download | rdiff-backup-4314c994485301ba8742c5f0ba17402b656122c7.tar.gz |
R
git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@478 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
Diffstat (limited to 'rdiff-backup')
-rw-r--r-- | rdiff-backup/rdiff_backup/Main.py | 1 | ||||
-rw-r--r-- | rdiff-backup/rdiff_backup/restore.py | 56 |
2 files changed, 33 insertions, 24 deletions
diff --git a/rdiff-backup/rdiff_backup/Main.py b/rdiff-backup/rdiff_backup/Main.py index 6553fdb..8cb817b 100644 --- a/rdiff-backup/rdiff_backup/Main.py +++ b/rdiff-backup/rdiff_backup/Main.py @@ -579,7 +579,6 @@ def restore_set_root(rpin): parent_dir = rpath.RPath(rpin.conn, "/".join(pathcomps[:i])) if (parent_dir.isdir() and "rdiff-backup-data" in parent_dir.listdir()): break - print "##########", parent_dir.path, Globals.restrict_path if parent_dir.path == rpin.conn.Globals.get('restrict_path'): return None i = i-1 diff --git a/rdiff-backup/rdiff_backup/restore.py b/rdiff-backup/rdiff_backup/restore.py index a113726..4a528ff 100644 --- a/rdiff-backup/rdiff_backup/restore.py +++ b/rdiff-backup/rdiff_backup/restore.py @@ -525,29 +525,39 @@ as data loss may result.\n""" % (self.mirror_rp.get_indexpath(),), 2) """ if not inc_rpath.isdir(): return - inc_dict = {} # dictionary of basenames:IndexedTuples(index, inc_list) - dirlist = robust.listrp(inc_rpath) - - def affirm_dict_indexed(basename): - """Make sure the rid dictionary has given basename as key""" - if not inc_dict.has_key(basename): - sub_inc_rp = inc_rpath.append(basename) - inc_dict[basename] = rorpiter.IndexedTuple(sub_inc_rp.index, - (sub_inc_rp, [])) - - def add_to_dict(filename): - """Add filename to the inc tuple dictionary""" - rp = inc_rpath.append(filename) - if rp.isincfile() and rp.getinctype() != 'data': - basename = rp.getincbase_str() - affirm_dict_indexed(basename) - inc_dict[basename][1].append(rp) - elif rp.isdir(): affirm_dict_indexed(filename) - - for filename in dirlist: add_to_dict(filename) - keys = inc_dict.keys() - keys.sort() - for key in keys: yield inc_dict[key] + + def get_inc_pairs(): + """Return unsorted list of (basename, inc_filenames) pairs""" + inc_dict = {} # dictionary of basenames:inc_filenames + dirlist = robust.listrp(inc_rpath) + + def add_to_dict(filename): + """Add filename to the inc tuple dictionary""" + rp = inc_rpath.append(filename) + if rp.isincfile() and rp.getinctype() != 'data': + basename = rp.getincbase_str() + inc_filename_list = inc_dict.setdefault(basename, []) + inc_filename_list.append(filename) + elif rp.isdir(): inc_dict.setdefault(filename, []) + + for filename in dirlist: add_to_dict(filename) + return inc_dict.items() + + def inc_filenames2incrps(filenames): + """Map list of filenames into increment rps""" + l = [] + for filename in filenames: + rp = inc_rpath.append(filename) + assert rp.isincfile(), rp.path + l.append(rp) + return l + + items = get_inc_pairs() + items.sort() # Sorting on basis of basename now + for (basename, inc_filenames) in items: + sub_inc_rpath = inc_rpath.append(basename) + yield rorpiter.IndexedTuple(sub_inc_rpath.index, + (sub_inc_rpath, inc_filenames2incrps(inc_filenames))) class PatchITRB(rorpiter.ITRBranch): |