Rev 325: Simplify return values of _apply_changes() functions. They now no longer in http://people.samba.org/bzr/jelmer/bzr-svn/bzr.dev
Jelmer Vernooij
jelmer at samba.org
Fri Dec 29 05:21:16 GMT 2006
------------------------------------------------------------
revno: 325
revision-id: jelmer at samba.org-20061229051751-j93sydbdguw15i25
parent: jelmer at samba.org-20061229025004-qped8lkugogltskd
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: main
timestamp: Fri 2006-12-29 06:17:51 +0100
message:
Simplify return values of _apply_changes() functions. They now no longer
return a revision id, as that is always the same.
modified:
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
fileids.py fileids.py-20060714013623-u5iiyqqnko11grcf-1
tests/test_fileids.py test_fileids.py-20060622131341-19gyrlgqy8yl2od5-1
=== modified file 'fetch.py'
--- a/fetch.py 2006-12-29 02:50:04 +0000
+++ b/fetch.py 2006-12-29 05:17:51 +0000
@@ -99,21 +99,19 @@
del self.inventory[self.inventory.path2id(path)]
def close_directory(self, id):
- revid = self.revid
-
if id != ROOT_ID:
- self.inventory[id].revision = revid
+ self.inventory[id].revision = self.revid
file_weave = self.weave_store.get_weave_or_empty(id, self.transact)
- if not file_weave.has_version(revid):
- file_weave.add_lines(revid, self.dir_baserev[id], [])
+ if not file_weave.has_version(self.revid):
+ file_weave.add_lines(self.revid, self.dir_baserev[id], [])
def add_directory(self, path, parent_baton, copyfrom_path, copyfrom_revnum, pool):
- file_id, revision_id = self.id_map[path]
+ file_id = self.id_map[path]
self.dir_baserev[file_id] = []
ie = self.inventory.add_path(path, 'directory', file_id)
- ie.revision = revision_id
+ ie.revision = self.revid
return file_id
@@ -122,10 +120,9 @@
base_file_id = self.old_inventory.path2id(path)
base_revid = self.old_inventory[base_file_id].revision
if self.id_map.has_key(path):
- file_id, revision_id = self.id_map[path]
+ file_id = self.id_map[path]
else:
file_id = base_file_id
- revision_id = base_rev_id
if file_id == base_file_id:
self.dir_baserev[file_id] = [base_revid]
ie = self.inventory[file_id]
@@ -140,7 +137,7 @@
self.inventory._byid[file_id] = ie
ie.file_id = file_id
self.dir_baserev[file_id] = []
- ie.revision = revision_id
+ ie.revision = self.revid
return file_id
def change_dir_prop(self, id, name, value, pool):
@@ -200,10 +197,9 @@
base_file_id = self.old_inventory.path2id(path)
base_revid = self.old_inventory[base_file_id].revision
if self.id_map.has_key(path):
- file_id, revid = self.id_map[path]
+ file_id = self.id_map[path]
else:
file_id = base_file_id
- revid = base_rev_id
self.is_executable = None
self.is_symlink = (self.inventory[base_file_id].kind == 'symlink')
file_weave = self.weave_store.get_weave_or_empty(base_file_id, self.transact)
@@ -229,13 +225,12 @@
assert checksum is None or checksum == actual_checksum
if self.id_map.has_key(path):
- file_id, revision_id = self.id_map[path]
+ file_id = self.id_map[path]
else:
file_id = self.old_inventory.path2id(path)
- revision_id = self.old_inventory[file_id].revision
file_weave = self.weave_store.get_weave_or_empty(file_id, self.transact)
- if not file_weave.has_version(revision_id):
- file_weave.add_lines(revision_id, self.file_parents, lines)
+ if not file_weave.has_version(self.revid):
+ file_weave.add_lines(self.revid, self.file_parents, lines)
if file_id in self.inventory:
ie = self.inventory[file_id]
@@ -243,7 +238,7 @@
ie = self.inventory.add_path(path, 'symlink', file_id)
else:
ie = self.inventory.add_path(path, 'file', file_id)
- ie.revision = revision_id
+ ie.revision = self.revid
if self.is_symlink:
ie.symlink_target = lines[0][len("link "):]
=== modified file 'fileids.py'
--- a/fileids.py 2006-12-29 02:50:04 +0000
+++ b/fileids.py 2006-12-29 05:17:51 +0000
@@ -142,14 +142,14 @@
# found the nearest cached map
next_parent_revs = [revid]
break
- else:
- todo.append((revid, paths))
- continue
+ todo.append((revid, paths))
# target revision was present
if len(todo) == 0:
return map
+ if len(map.keys()) == 0:
+ map = {"": (ROOT_ID, None)} # No history -> empty map
todo.reverse()
i = 0
@@ -166,7 +166,23 @@
yield self.repos.scheme.unprefix(p)[1]
parent_revs = next_parent_revs
- map = self._apply_changes(revid, changes, find_children, map)
+
+ revmap = self._apply_changes(revid, changes, find_children)
+ for p in changes:
+ if changes[p][0] == 'M':
+ revmap[p] = map[p][0]
+
+ map.update(dict([(x, (revmap[x], revid)) for x in revmap]))
+ # Mark all parent paths as changed
+ for p in revmap:
+ parts = p.split("/")
+ for j in range(1, len(parts)):
+ parent = "/".join(parts[0:len(parts)-j])
+ assert map.has_key(parent), "Parent item %s of %s doesn't exist in map" % (parent, p)
+ if map[parent][1] == revid:
+ break
+ map[parent] = map[parent][0], revid
+
next_parent_revs = [revid]
i = i + 1
@@ -179,35 +195,22 @@
class SimpleFileIdMap(FileIdMap):
@staticmethod
- def _apply_changes(revid, changes, find_children=None, map={}):
+ def _apply_changes(revid, changes, find_children=None):
+ map = {}
sorted_paths = changes.keys()
sorted_paths.sort()
for p in sorted_paths:
data = changes[p]
if data[0] in ('A', 'R'):
- map[p] = generate_file_id(revid, p), revid
+ map[p] = generate_file_id(revid, p)
if data[1] is not None:
mutter('%r:%s copied from %r:%s' % (p, revid, data[1], data[2]))
assert find_children is not None, 'incomplete data for %r' % p
for c in find_children(data[1], data[2]):
path = c.replace(data[1], p+"/", 1).replace("//", "/")
- map[path] = generate_file_id(revid, c), revid
+ map[path] = generate_file_id(revid, c)
mutter('added mapping %r -> %r' % (path, map[path]))
- elif data[0] == 'M':
- if p == "":
- map[p] = (ROOT_ID, "")
- assert map.has_key(p), "Map has no item %s to modify" % p
- map[p] = map[p][0], revid
-
- # Mark all parent paths as changed
- parts = p.split("/")
- for i in range(1, len(parts)):
- parent = "/".join(parts[0:len(parts)-i])
- assert map.has_key(parent), "Parent item %s of %s doesn't exist in map" % (parent, p)
- if map[parent][1] == revid:
- break
- map[parent] = map[parent][0], revid
return map
=== modified file 'tests/test_fileids.py'
--- a/tests/test_fileids.py 2006-12-29 02:04:14 +0000
+++ b/tests/test_fileids.py 2006-12-29 05:17:51 +0000
@@ -153,8 +153,8 @@
revids = mappings.keys()
revids.sort()
for r in revids:
- map = SimpleFileIdMap._apply_changes(r, mappings[r],
- find_children, map)
+ revmap = SimpleFileIdMap._apply_changes(r, mappings[r], find_children)
+ map.update(dict([(x,(revmap[x],r)) for x in revmap]))
return map
def test_simple(self):
@@ -195,4 +195,4 @@
("svn-v%d:2 at uuid-" % MAPPING_VERSION): {
"foo/bla": ('M', None, None)}
})
- self.assertEqual("svn-v%d:2 at uuid-" % MAPPING_VERSION, map["foo"][1])
+ self.assertEqual("svn-v%d:1 at uuid-" % MAPPING_VERSION, map["foo"][1])
More information about the bazaar-commits
mailing list