Rev 3: Handle merges. in file:///v/home/vila/.bazaar/plugins/lpto/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Sat Sep 13 08:45:48 BST 2008
At file:///v/home/vila/.bazaar/plugins/lpto/
------------------------------------------------------------
revno: 3
revision-id: v.ladeuil+lp at free.fr-20080913074548-rifgaaycas49r7qn
parent: v.ladeuil+lp at free.fr-20080912174029-2cfhczgx8a6gr2uf
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: lpto
timestamp: Sat 2008-09-13 09:45:48 +0200
message:
Handle merges.
* tests/test_lpto.py:
(TestCalculateLptos.test_simple_merge): Added.
* __init__.py:
(calculate_lptos): A simple reverse will do. Accept 'null:' as a
revid (rich-root ?). Add depth in the values returned for analysis
purpose.
modified:
__init__.py __init__.py-20080912160131-v30mt2ve4pzprxqp-1
tests/test_lpto.py test_lpto.py-20080912160131-v30mt2ve4pzprxqp-4
-------------- next part --------------
=== modified file '__init__.py'
--- a/__init__.py 2008-09-12 17:40:29 +0000
+++ b/__init__.py 2008-09-13 07:45:48 +0000
@@ -38,7 +38,7 @@
def _run(self, br):
for lpto, revno, revid in calculate_lptos(br):
- print '%r:%r:%r' % (lpto, revno, revid)
+ print '%r:%r:%r:%r:%r' % (lpto, revno, depth, revid)
def calculate_lptos(br):
@@ -54,9 +54,9 @@
merge_sorted_revisions = tsort.merge_sort(rev_graph, last_rev, None,
generate_revno=True)
- merge_sorted_revisions = log.reverse_by_depth(merge_sorted_revisions)
+ merge_sorted_revisions.reverse()
revs = []
- lptos = dict()
+ lptos = {'null:':0}
previous = None
for seq, revid, depth, revno, end_of_merge in merge_sorted_revisions:
if previous is None:
@@ -69,11 +69,16 @@
else:
lpto = 0
for p in parents:
- parent_lpto = lptos[p]
- if parent_lpto > lpto:
- lpto = parent_lpto + 1
+ try:
+ parent_lpto = lptos[p]
+ if parent_lpto > lpto:
+ lpto = parent_lpto + 1
+ except KeyError:
+ # merge_sort (reversed) guarantees that we see the
+ # parents before the children, this should be ghost.
+ pass
lptos[revid] = lpto
- revs.append((lpto, revno, revid))
+ revs.append((lpto, revno, depth, revid))
previous = revid
return revs
=== modified file 'tests/test_lpto.py'
--- a/tests/test_lpto.py 2008-09-12 17:40:29 +0000
+++ b/tests/test_lpto.py 2008-09-13 07:45:48 +0000
@@ -41,7 +41,25 @@
builder.build_snapshot('C-id', ['B-id'], [])
# FIXME: Since we use not tree, the following fails, that's a bug.
# builder.finish_series()
- self.assertEqual([(1, (1,), 'A-id'),
- (2, (2,), 'B-id'),
- (3, (3,), 'C-id')],
+ self.assertEqual([(1, (1,), 0, 'A-id'),
+ (2, (2,), 0, 'B-id'),
+ (3, (3,), 0, 'C-id')],
+ self._get_lptos(builder.get_branch()))
+
+ def test_simple_merge(self):
+ builder = self.make_branch_builder('path')
+ builder.build_snapshot('A-id', None,
+ [('add', ('', 'a-root-id', 'directory', None))])
+ builder.build_snapshot('B-id', ['A-id'], [])
+ builder.build_snapshot('C-id', ['B-id'], [])
+ builder.build_snapshot('D-id', ['A-id'], [])
+ builder.build_snapshot('E-id', ['C-id', 'D-id'], [])
+ # FIXME: Since we use no tree, the following fails, that's a bug.
+ # builder.finish_series()
+ self.assertEqual([(1, (1,), 0, 'A-id'),
+ (2, (2,), 0, 'B-id'),
+ (3, (3,), 0, 'C-id'),
+ (2, (1, 1, 1), 1, 'D-id'),
+ (4, (4,), 0, 'E-id'),
+ ],
self._get_lptos(builder.get_branch()))
More information about the bazaar-commits
mailing list