Rev 1500: Simplify fileids code, fix last test. in http://people.samba.org/bzr/jelmer/bzr-svn/trunk
Jelmer Vernooij
jelmer at samba.org
Wed Jul 23 21:45:19 BST 2008
At http://people.samba.org/bzr/jelmer/bzr-svn/trunk
------------------------------------------------------------
revno: 1500
revision-id: jelmer at samba.org-20080723204518-r32bj14btyztutir
parent: jelmer at samba.org-20080723193524-9v6t8s0f9so0mxhe
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Wed 2008-07-23 22:45:18 +0200
message:
Simplify fileids code, fix last test.
modified:
fileids.py fileids.py-20060714013623-u5iiyqqnko11grcf-1
=== modified file 'fileids.py'
--- a/fileids.py 2008-07-23 19:35:24 +0000
+++ b/fileids.py 2008-07-23 20:45:18 +0000
@@ -80,10 +80,8 @@
inv_p = p.decode("utf-8")
if data[0] in ('D', 'R'):
- map[inv_p] = None
- for p in map:
- if p.startswith("%s/" % inv_p):
- map[p] = None
+ if not inv_p in map:
+ map[inv_p] = None
if data[0] in ('A', 'R'):
map[inv_p] = new_file_id(inv_p)
@@ -158,44 +156,47 @@
pb = ui.ui_factory.nested_progress_bar()
try:
- i = 1
- for revmeta in reversed(todo):
+ for i, revmeta in enumerate(reversed(todo)):
+ pb.update('generating file id map', i, len(todo))
revid = revmeta.get_revision_id(mapping)
- expensive = False
- def log_find_children(path, revnum):
- expensive = True
- return self.repos._log.find_children(path, revnum)
-
(idmap, changes) = self.apply_changes(revmeta,
- mapping, log_find_children)
+ mapping, self.repos._log.find_children)
self.update_map(map, revid, idmap, changes)
-
- pb.update('generating file id map', i, len(todo))
parent_revs = next_parent_revs
next_parent_revs = [revid]
- i += 1
finally:
pb.finished()
return map
- def update_map(self, map, revid, idmap, changes):
+ def update_map(self, map, revid, delta, changes):
+ """Update a file id map.
+
+ :param map: Existing file id map.
+ :param revid: Revision id of the id map
+ :param delta: Id map for just the delta
+ :param changes: Changes in revid.
+ """
for p in changes:
- if changes[p][0] == 'M' and not idmap.has_key(p):
- idmap[p] = map[p][0]
-
- for x in sorted(idmap.keys()):
- if idmap[x] is None:
+ if changes[p][0] == 'M' and not delta.has_key(p):
+ delta[p] = map[p][0]
+
+ for x in sorted(delta.keys(), reverse=True):
+ if delta[x] is None:
del map[x]
for p in map.keys():
- if p.startswith("%s/" % x):
+ if p.startswith(u"%s/" % x):
del map[p]
- else:
- map[x] = (str(idmap[x]), revid)
+
+ for x in sorted(delta.keys()):
+ if delta[x] is not None:
+ map[x] = (str(delta[x]), revid)
# Mark all parent paths as changed
- for p in idmap:
+ for p in delta:
+ if delta[p] is None:
+ continue
parts = p.split("/")
for j in range(1, len(parts)+1):
parent = "/".join(parts[0:len(parts)-j])
@@ -275,8 +276,8 @@
pb = ui.ui_factory.nested_progress_bar()
try:
- i = 1
- for revmeta in reversed(todo):
+ for i, revmeta in enumerate(reversed(todo)):
+ pb.update('generating file id map', i, len(todo))
revid = revmeta.get_revision_id(mapping)
expensive = False
def log_find_children(path, revnum):
@@ -287,7 +288,6 @@
revmeta, mapping, log_find_children)
self.actual.update_map(map, revid, idmap, changes)
- pb.update('generating file id map', i, len(todo))
parent_revs = next_parent_revs
@@ -296,7 +296,6 @@
self.save(revid, parent_revs, map)
saved = True
next_parent_revs = [revid]
- i += 1
finally:
pb.finished()
if not saved:
More information about the bazaar-commits
mailing list