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