- 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
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:
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."""
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]
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("/")
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"})