At http://people.samba.org/bzr/jelmer/bzr-svn/0.5
------------------------------------------------------------ revno: 2297 revision-id: [email protected] parent: [email protected] committer: Jelmer Vernooij <[email protected]> branch nick: 0.5 timestamp: Tue 2009-01-13 04:18:11 +0100 message: Follow copied tags correctly. modified: NEWS news-20061231030336-h9fhq245ie0de8bs-1 revmeta.py revmeta.py-20080901215045-n8a6arqybs9ez5hl-1 tests/test_revmeta.py test_revmeta.py-20080903002416-q6u02e2hrc2oxa8h-1 === modified file 'NEWS' --- a/NEWS 2009-01-12 23:42:55 +0000 +++ b/NEWS 2009-01-13 03:18:11 +0000 @@ -39,6 +39,8 @@ * Print proper error when attempting to create repository in Subversion working copy. (#310063) + * Follow copied tags correctly. (#312272) + bzr-svn 0.5.0~rc1 2008-12-08 CHANGES === modified file 'revmeta.py' --- a/revmeta.py 2009-01-13 00:48:46 +0000 +++ b/revmeta.py 2009-01-13 03:18:11 +0000 @@ -992,7 +992,6 @@ return revmeta unusual = set() - remembered = dict() for (paths, revnum, revprops) in self._provider._log.iter_changes( self.prefixes, self.from_revnum, self.to_revnum, pb=pb): bps = {} @@ -1001,8 +1000,13 @@ pb.update("discovering revisions", revnum-self.to_revnum, self.from_revnum-self.to_revnum) - for bp, mbs in remembered.iteritems(): - metabranches_history[revnum][bp].update(mbs) + # Import all metabranches_history where key > revnum + from bzrlib.trace import mutter + mutter('size %r' % len(metabranches_history)) + for x in [r for r in metabranches_history if r > revnum]: + for bp in metabranches_history[x].keys(): + metabranches_history[revnum][bp].update(metabranches_history[x][bp]) + del metabranches_history[x][bp] for bp, mbs in metabranches_history[revnum].iteritems(): if not bp in self._metabranches: self._metabranches[bp] = iter(mbs).next() @@ -1029,6 +1033,13 @@ # Mention deletes for d in deletes: yield ("delete", p) + + for bp, mb in bps.items(): + revmeta = process_new_rev(bp, mb, revnum, paths, revprops) + if (bp in paths and paths[bp][0] in ('A', 'R') and + paths[bp][1] is None): + revmeta._set_direct_lhs_parent_revmeta(None) + yield "revision", revmeta # Apply renames and the like for the next round for new_name, old_name, old_rev in changes.apply_reverse_changes( @@ -1053,16 +1064,7 @@ metabranches_history[old_rev][old_name].add(data) if not self.layout.is_branch_or_tag(old_name, project): unusual_history[old_rev].add(old_name) - - for bp, mb in bps.items(): - revmeta = process_new_rev(bp, mb, revnum, paths, revprops) - if (bp in paths and paths[bp][0] in ('A', 'R') and - paths[bp][1] is None): - revmeta._set_direct_lhs_parent_revmeta(None) - yield "revision", revmeta self._last_revnum = revnum - remembered = metabranches_history[revnum] - del metabranches_history[revnum] def filter_revisions(it): === modified file 'tests/test_revmeta.py' --- a/tests/test_revmeta.py 2009-01-12 22:01:32 +0000 +++ b/tests/test_revmeta.py 2009-01-13 03:18:11 +0000 @@ -178,7 +178,7 @@ class FakeRevision(object): def __init__(self, path, revnum): - self.path = path + self.branch_path = path self.revnum = revnum self._parent_revmeta_set = False self.parent_revmeta = None @@ -193,11 +193,11 @@ revmeta.children.add(self) def __repr__(self): - return "FakeRevision(%r,%r)" % (self.path, self.revnum) + return "FakeRevision(%r,%r)" % (self.branch_path, self.revnum) def __eq__(self, other): return (type(self) == type(other) and - self.path == other.path and + self.branch_path == other.branch_path and self.revnum == other.revnum) @@ -304,7 +304,7 @@ 4: { "python/tags/bla": ('A', 'python/trunk', 2)}}) rev1 = browser.next() self.assertEquals(('revision', FakeRevision('python/tags/bla',4)), rev1) - self.assertTrue(rev1[1]._parent_revmeta_set) rev2 = browser.next() self.assertEquals(('revision', FakeRevision('python/trunk',1)), rev2) self.assertRaises(StopIteration, browser.next) + self.assertTrue(rev1[1]._parent_revmeta_set) -- bazaar-commits mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/bazaar-commits
