Rev 301: Alternative fix to replace problem. in http://people.samba.org/bzr/jelmer/bzr-svn/bzr.dev

Jelmer Vernooij jelmer at samba.org
Tue Dec 26 04:05:12 GMT 2006


------------------------------------------------------------
revno: 301
revision-id: jelmer at samba.org-20061226040444-bojmquiro1s5yq0k
parent: jelmer at samba.org-20061226023540-mimrjtt0za3exypm
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: main
timestamp: Tue 2006-12-26 05:04:44 +0100
message:
  Alternative fix to replace problem.
modified:
  fetch.py                       fetch.py-20060625004942-x2lfaib8ra707a8p-1
=== modified file 'fetch.py'
--- a/fetch.py	2006-12-26 02:35:40 +0000
+++ b/fetch.py	2006-12-26 04:04:44 +0000
@@ -109,20 +109,6 @@
     def add_directory(self, path, parent_baton, copyfrom_path, copyfrom_revnum, pool):
         file_id, revision_id = self.id_map[path]
 
-        if copyfrom_path is not None:
-            base_file_id, base_revid = self.source.path_to_file_id(copyfrom_revnum, os.path.join(self.parent_branch, copyfrom_path))
-            if base_file_id == file_id: 
-                self.dir_baserev[file_id] = [base_revid]
-                ie = self.inventory[file_id]
-                ie.revision = revision_id
-                return file_id
-
-            # there is a strange bug in the subversion editor that causes 
-            # it to not report deletes for files that are 
-            # being replaced (R) by an older copy of themselves
-            if copyfrom_path == path and base_file_id in self.inventory:
-                del self.inventory[base_file_id]
-
         self.dir_baserev[file_id] = []
         ie = self.inventory.add_path(path, 'directory', file_id)
         ie.revision = revision_id
@@ -130,7 +116,19 @@
         return file_id
 
     def open_directory(self, path, parent_baton, base_revnum, pool):
-        return self.add_directory(path, parent_baton, path, base_revnum, pool)
+        file_id, revision_id = self.id_map[path]
+        assert base_revnum >= 0
+        base_file_id, base_revid = self.source.path_to_file_id(base_revnum, os.path.join(self.parent_branch, path))
+        if file_id == base_file_id:
+            self.dir_baserev[file_id] = [base_revid]
+            ie = self.inventory[file_id]
+        else:
+            # Replace
+            del self.inventory[base_file_id]
+            self.dir_baserev[file_id] = []
+            ie = self.inventory.add_path(path, 'directory', file_id)
+        ie.revision = revision_id
+        return file_id
 
     def change_dir_prop(self, id, name, value, pool):
         if name == SVN_PROP_BZR_MERGE:




More information about the bazaar-commits mailing list