Fix custom revision ids for per-file revision ids.
authorJelmer Vernooij <jelmer@samba.org>
Fri, 18 May 2007 12:46:12 +0000 (13:46 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Fri, 18 May 2007 12:46:12 +0000 (13:46 +0100)
fetch.py
fileids.py
tests/test_commit.py
tests/test_push.py

index 550aefbfc271b8c1c1f7e17ee01434c6d8dda177..a5ea6f2446ab94b4093f0b090a339c461149ec74 100644 (file)
--- a/fetch.py
+++ b/fetch.py
@@ -96,7 +96,7 @@ class RevisionBuildEditor(svn.delta.Editor):
     def open_root(self, base_revnum, baton):
         if self.old_inventory.root is None:
             # First time the root is set
-            file_id = generate_file_id(self.revid, "")
+            file_id = generate_file_id(self.source, self.revid, "")
             self.dir_baserev[file_id] = []
         else:
             assert self.old_inventory.root.revision is not None
@@ -125,7 +125,7 @@ class RevisionBuildEditor(svn.delta.Editor):
     def _get_new_id(self, parent_id, new_path):
         if self.id_map.has_key(new_path):
             return self.id_map[new_path]
-        return generate_file_id(self.revid, new_path)
+        return generate_file_id(self.source, self.revid, new_path)
 
     def delete_entry(self, path, revnum, parent_id, pool):
         path = path.decode("utf-8")
index 8af7dae1673827407a5a4edae72156e1a12e62bd..d61c884da13f5718db5b623ebaf78be268551aba 100644 (file)
@@ -22,8 +22,7 @@ import bzrlib.ui as ui
 
 import sha
 
-from revids import (generate_svn_revision_id, parse_svn_revision_id, 
-                    escape_svn_path)
+from revids import escape_svn_path
 
 def generate_svn_file_id(uuid, revnum, branch, path):
     """Create a file id identifying a Subversion file.
@@ -42,12 +41,12 @@ def generate_svn_file_id(uuid, revnum, branch, path):
     return ret
 
 
-def generate_file_id(revid, path):
-    (uuid, branch, revnum) = parse_svn_revision_id(revid)
-    return generate_svn_file_id(uuid, revnum, branch, path)
+def generate_file_id(repos, revid, path):
+    (branch, revnum) = repos.lookup_revision_id(revid)
+    return generate_svn_file_id(repos.uuid, revnum, branch, path)
 
 
-def get_local_changes(paths, scheme, uuid, get_children=None):
+def get_local_changes(paths, scheme, generate_revid, get_children=None):
     new_paths = {}
     names = paths.keys()
     names.sort()
@@ -62,8 +61,7 @@ def get_local_changes(paths, scheme, uuid, get_children=None):
                 if (crp == "" and new_p == ""):
                     data = ('M', None, None)
                 else:
-                    data = (data[0], crp, generate_svn_revision_id(
-                        uuid, data[2], cbp))
+                    data = (data[0], crp, generate_revid(data[2], cbp))
             except NotBranchError:
                 # Copied from outside of a known branch
                 # Make it look like the files were added in this revision
@@ -117,7 +115,7 @@ class FileIdMap(object):
         :param global_changes: Dict with global changes that happened
         """
         changes = get_local_changes(global_changes, self.repos.scheme,
-                                        uuid, find_children)
+                    self.repos.generate_revision_id, find_children)
         if find_children is not None:
             def get_children(path, revid):
                 (bp, revnum) = self.repos.lookup_revision_id(revid)
@@ -126,12 +124,12 @@ class FileIdMap(object):
         else:
             get_children = None
 
-        revid = generate_svn_revision_id(uuid, revnum, branch)
+        revid = self.repos.generate_revision_id(revnum, branch)
 
         def new_file_id(x):
             if renames.has_key(x):
                 return renames[x]
-            return generate_file_id(revid, x)
+            return generate_file_id(self.repos, revid, x)
          
         return self._apply_changes(new_file_id, changes, get_children)
 
@@ -147,7 +145,7 @@ class FileIdMap(object):
 
         # No history -> empty map
         for (bp, paths, rev) in self.repos.follow_branch_history(branch, revnum):
-            revid = generate_svn_revision_id(uuid, rev, bp)
+            revid = self.repos.generate_revision_id(rev, bp)
             map = self.load(revid)
             if map != {}:
                 # found the nearest cached map
@@ -188,7 +186,7 @@ class FileIdMap(object):
                 def new_file_id(x):
                     if renames.has_key(x):
                         return renames[x]
-                    return generate_file_id(revid, x)
+                    return generate_file_id(self.repos, revid, x)
                 
                 revmap = self._apply_changes(new_file_id, changes, find_children)
                 for p in changes:
index 18e556d57ccc071cb2961650b8401570afa2d7db..7fa15c26607c76afc9bb8b0c62c8ecf9904d9a2c 100644 (file)
@@ -224,12 +224,10 @@ class TestPush(TestCaseWithSubversionRepository):
 
         repos = self.olddir.find_repository()
         inv = repos.get_inventory(repos.generate_revision_id(2, ""))
-        import pdb
-        pdb.set_trace()
         self.assertEqual(repos.generate_revision_id(2, ""),
                          inv[inv.path2id('foo/bla')].revision)
-        self.assertTrue(wt.branch.last_revision() in 
-          repos.revision_parents(repos.generate_revision_id(2, "")))
+        self.assertEqual(wt.branch.last_revision(),
+          repos.generate_revision_id(2, ""))
         self.assertEqual(wt.branch.last_revision(),
                         self.olddir.open_branch().last_revision())
         self.assertEqual("other data", 
index 15e9e2236405376741a4fedc2f71c1ee6247f187..e7e8220b31927002037470571b0467385f04c2bc 100644 (file)
@@ -87,8 +87,8 @@ class TestPush(TestCaseWithSubversionRepository):
         inv = repos.get_inventory(repos.generate_revision_id(2, ""))
         self.assertEqual(repos.generate_revision_id(2, ""),
                          inv[inv.path2id('foo/bla')].revision)
-        self.assertTrue(wt.branch.last_revision() in 
-          repos.revision_parents(repos.generate_revision_id(2, "")))
+        self.assertEqual(wt.branch.last_revision(),
+          repos.generate_revision_id(2, ""))
         self.assertEqual(repos.generate_revision_id(2, ""),
                         self.svndir.open_branch().last_revision())
         self.assertEqual("other data",