Rev 326: Don't look up full path but just basename in parents' children list. in http://people.samba.org/bzr/jelmer/bzr-svn/bzr.dev
Jelmer Vernooij
jelmer at samba.org
Fri Dec 29 16:58:20 GMT 2006
------------------------------------------------------------
revno: 326
revision-id: jelmer at samba.org-20061229165621-bm2p23gukm0yj8fx
parent: jelmer at samba.org-20061229051751-j93sydbdguw15i25
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: main
timestamp: Fri 2006-12-29 17:56:21 +0100
message:
Don't look up full path but just basename in parents' children list.
modified:
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
=== modified file 'fetch.py'
--- a/fetch.py 2006-12-29 05:17:51 +0000
+++ b/fetch.py 2006-12-29 16:56:21 +0000
@@ -95,8 +95,11 @@
def relpath(self, path):
return path.strip("/")
+ def _get_existing_id(self, parent_id, old_path):
+ return self.old_inventory[parent_id].children[os.path.basename(old_path)].file_id
+
def delete_entry(self, path, revnum, parent_baton, pool):
- del self.inventory[self.inventory.path2id(path)]
+ del self.inventory[self._get_existing_id(parent_baton, path)]
def close_directory(self, id):
if id != ROOT_ID:
@@ -117,7 +120,7 @@
def open_directory(self, path, parent_baton, base_revnum, pool):
assert base_revnum >= 0
- base_file_id = self.old_inventory.path2id(path)
+ base_file_id = self._get_existing_id(parent_baton, path)
base_revid = self.old_inventory[base_file_id].revision
if self.id_map.has_key(path):
file_id = self.id_map[path]
@@ -191,21 +194,22 @@
self.file_data = ""
self.file_parents = []
self.file_stream = None
+ self.file_id = self.id_map[path]
return path
def open_file(self, path, parent_id, base_revnum, pool):
- base_file_id = self.old_inventory.path2id(path)
+ base_file_id = self._get_existing_id(parent_id, path)
base_revid = self.old_inventory[base_file_id].revision
if self.id_map.has_key(path):
- file_id = self.id_map[path]
+ self.file_id = self.id_map[path]
else:
- file_id = base_file_id
+ self.file_id = base_file_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)
self.file_data = file_weave.get_text(base_revid)
self.file_stream = None
- if file_id == base_file_id:
+ if self.file_id == base_file_id:
self.file_parents = [base_revid]
else:
# Replace
@@ -224,20 +228,16 @@
actual_checksum = md5_strings(lines)
assert checksum is None or checksum == actual_checksum
- if self.id_map.has_key(path):
- file_id = self.id_map[path]
- else:
- file_id = self.old_inventory.path2id(path)
- file_weave = self.weave_store.get_weave_or_empty(file_id, self.transact)
+ file_weave = self.weave_store.get_weave_or_empty(self.file_id, self.transact)
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]
+ if self.file_id in self.inventory:
+ ie = self.inventory[self.file_id]
elif self.is_symlink:
- ie = self.inventory.add_path(path, 'symlink', file_id)
+ ie = self.inventory.add_path(path, 'symlink', self.file_id)
else:
- ie = self.inventory.add_path(path, 'file', file_id)
+ ie = self.inventory.add_path(path, 'file', self.file_id)
ie.revision = self.revid
if self.is_symlink:
More information about the bazaar-commits
mailing list