Rev 371: Actually use fileid overrides when available. in http://people.samba.org/bzr/jelmer/bzr-svn/bzr.dev

Jelmer Vernooij jelmer at samba.org
Wed Jan 3 10:48:04 GMT 2007


------------------------------------------------------------
revno: 371
revision-id: jelmer at samba.org-20070103104612-w2honujsz10jww2s
parent: jelmer at samba.org-20070103071312-9ncpsbv28tn3w19p
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: main
timestamp: Wed 2007-01-03 11:46:12 +0100
message:
  Actually use fileid overrides when available.
modified:
  TODO                           todo-20060729211917-2kpobww0zyvvo0j2-1
  fileids.py                     fileids.py-20060714013623-u5iiyqqnko11grcf-1
  tests/test_repos.py            test_repos.py-20060508151940-ddc49a59257ca712
=== modified file 'TODO'
--- a/TODO	2007-01-02 19:17:26 +0000
+++ b/TODO	2007-01-03 10:46:12 +0000
@@ -1,4 +1,5 @@
 - better tests for get_fileid_map()
+ - better tests for get_local_changes()
 - make scheme name part of revision id
 - fix commits in checkouts somehow
 - fix autorealm repository

=== modified file 'fileids.py'
--- a/fileids.py	2007-01-03 07:13:12 +0000
+++ b/fileids.py	2007-01-03 10:46:12 +0000
@@ -130,7 +130,7 @@
                                         uuid, find_children)
         if find_children is not None:
             def get_children(path, revid):
-                (_, bp, revnum) = parse_svn_revision_id(revid)
+                (bp, revnum) = self.repos.parse_revision_id(revid)
                 for p in find_children(bp+"/"+path, revnum):
                     yield self.repos.scheme.unprefix(p)[1]
         else:
@@ -138,8 +138,12 @@
 
         revid = generate_svn_revision_id(uuid, revnum, branch)
 
-        return self._apply_changes(lambda x: generate_file_id(revid, x), 
-                                   changes, get_children)
+        def new_file_id(x):
+            if renames.has_key(x):
+                return renames[x]
+            return generate_file_id(revid, x)
+         
+        return self._apply_changes(new_file_id, changes, get_children)
 
     def get_map(self, uuid, revnum, branch, renames_cb):
         """Make sure the map is up to date until revnum."""
@@ -173,7 +177,7 @@
             pb.update('generating file id map', i, len(todo))
 
             def find_children(path, revid):
-                (_, bp, revnum) = parse_svn_revision_id(revid)
+                (bp, revnum) = self.repos.parse_revision_id(revid)
                 for p in self.repos._log.find_children(bp+"/"+path, revnum):
                     yield self.repos.scheme.unprefix(p)[1]
 
@@ -192,6 +196,7 @@
                     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("/")

=== modified file 'tests/test_repos.py'
--- a/tests/test_repos.py	2007-01-03 07:13:12 +0000
+++ b/tests/test_repos.py	2007-01-03 10:46:12 +0000
@@ -592,6 +592,20 @@
         renames = repos.revision_fileid_renames("svn-v%d:1@%s-" % (MAPPING_VERSION, repos.uuid))
         self.assertEqual({"test": "bla"}, renames)
 
+    def test_fetch_fileid_renames(self):
+        repos_url = self.make_client('d', 'dc')
+        self.build_tree({'dc/test': "data"})
+        self.client_add("dc/test")
+        self.client_set_prop("dc", "bzr:file-ids", "test\tbla\n")
+        self.client_commit("dc", "Msg")
+
+        oldrepos = Repository.open(repos_url)
+        dir = BzrDir.create("f")
+        newrepos = dir.create_repository()
+        oldrepos.copy_content_into(newrepos)
+        self.assertEqual("bla", newrepos.get_inventory(
+            "svn-v%d:1@%s-" % (MAPPING_VERSION, oldrepos.uuid)).path2id("test"))
+
     def test_fetch_trunk1(self):
         repos_url = self.make_client('d', 'dc')
         self.build_tree({'dc/proj1/trunk/file': "data"})




More information about the bazaar-commits mailing list