##// END OF EJS Templates
template: better prune support in obsfate...
Boris Feld -
r33998:98fa777c default
parent child Browse files
Show More
@@ -585,8 +585,40 b' def successorsandmarkers(repo, ctx):'
585
585
586 ssets = successorssets(repo, ctx.node(), closest=True)
586 ssets = successorssets(repo, ctx.node(), closest=True)
587
587
588 # closestsuccessors returns an empty list for pruned revisions, remap it
589 # into a list containing an empty list for future processing
590 if ssets == []:
591 ssets = [[]]
592
593 # Try to recover pruned markers
594 succsmap = repo.obsstore.successors
595 fullsuccessorsets = [] # successor set + markers
596 for sset in ssets:
597 if sset:
598 fullsuccessorsets.append(sset)
599 else:
600 # successorsset return an empty set() when ctx or one of its
601 # successors is pruned.
602 # In this case, walk the obs-markers tree again starting with ctx
603 # and find the relevant pruning obs-makers, the ones without
604 # successors.
605 # Having these markers allow us to compute some information about
606 # its fate, like who pruned this changeset and when.
607
608 # XXX we do not catch all prune markers (eg rewritten then pruned)
609 # (fix me later)
610 foundany = False
611 for mark in succsmap.get(ctx.node(), ()):
612 if not mark[1]:
613 foundany = True
614 sset = _succs()
615 sset.markers.add(mark)
616 fullsuccessorsets.append(sset)
617 if not foundany:
618 fullsuccessorsets.append(_succs())
619
588 values = []
620 values = []
589 for sset in ssets:
621 for sset in fullsuccessorsets:
590 values.append({'successors': sset, 'markers': sset.markers})
622 values.append({'successors': sset, 'markers': sset.markers})
591
623
592 return values
624 return values
@@ -12,7 +12,7 b' Global setup'
12 > [experimental]
12 > [experimental]
13 > stabilization=all
13 > stabilization=all
14 > [templates]
14 > [templates]
15 > obsfatesuccessors = " as {join(successors, ", ")}"
15 > obsfatesuccessors = "{if(successors, " as ")}{join(successors, ", ")}"
16 > obsfateverb = "{obsfateverb(successors)}"
16 > obsfateverb = "{obsfateverb(successors)}"
17 > obsfateusers = "{if(obsfateusers(markers), " by {join(obsfateusers(markers), ", ")}")}"
17 > obsfateusers = "{if(obsfateusers(markers), " by {join(obsfateusers(markers), ", ")}")}"
18 > obsfatedate = "{if(obsfatedate(markers), "{ifeq(min(obsfatedate(markers)), max(obsfatedate(markers)), " (at {min(obsfatedate(markers))|isodate})", " (between {min(obsfatedate(markers))|isodate} and {max(obsfatedate(markers))|isodate})")}")}"
18 > obsfatedate = "{if(obsfatedate(markers), "{ifeq(min(obsfatedate(markers)), max(obsfatedate(markers)), " (at {min(obsfatedate(markers))|isodate})", " (between {min(obsfatedate(markers))|isodate} and {max(obsfatedate(markers))|isodate})")}")}"
@@ -165,7 +165,7 b' with --hidden'
165 | @ a468dc9b3633
165 | @ a468dc9b3633
166 |/ Obsfate: rewritten as 4:d004c8f274b9 by test2 (at 2001-04-19 04:25 +0000);
166 |/ Obsfate: rewritten as 4:d004c8f274b9 by test2 (at 2001-04-19 04:25 +0000);
167 | x f137d23bb3e1
167 | x f137d23bb3e1
168 | |
168 | | Obsfate: pruned by test1 (at 2009-02-13 23:31 +0000);
169 | x 471f378eab4c
169 | x 471f378eab4c
170 |/ Obsfate: rewritten as 3:a468dc9b3633 by test1 (at 2009-02-13 23:31 +0000);
170 |/ Obsfate: rewritten as 3:a468dc9b3633 by test1 (at 2009-02-13 23:31 +0000);
171 o ea207398892e
171 o ea207398892e
@@ -214,7 +214,7 b' visible.'
214 | x a468dc9b3633
214 | x a468dc9b3633
215 |/ Obsfate: rewritten as 4:d004c8f274b9 by test2 (at 2001-04-19 04:25 +0000);
215 |/ Obsfate: rewritten as 4:d004c8f274b9 by test2 (at 2001-04-19 04:25 +0000);
216 | x f137d23bb3e1
216 | x f137d23bb3e1
217 | |
217 | | Obsfate: pruned by test1 (at 2009-02-13 23:31 +0000);
218 | x 471f378eab4c
218 | x 471f378eab4c
219 |/ Obsfate: rewritten as 3:a468dc9b3633 by test1 (at 2009-02-13 23:31 +0000);
219 |/ Obsfate: rewritten as 3:a468dc9b3633 by test1 (at 2009-02-13 23:31 +0000);
220 o ea207398892e
220 o ea207398892e
@@ -225,7 +225,7 b' visible.'
225 | x a468dc9b3633
225 | x a468dc9b3633
226 |/ Obsfate: [{"markers": [["a468dc9b36338b14fdb7825f55ce3df4e71517ad", ["d004c8f274b9ec480a47a93c10dac5eee63adb78"], 0, [["user", "test2"]], [987654321.0, 0], null]], "successors": ["d004c8f274b9ec480a47a93c10dac5eee63adb78"]}]
226 |/ Obsfate: [{"markers": [["a468dc9b36338b14fdb7825f55ce3df4e71517ad", ["d004c8f274b9ec480a47a93c10dac5eee63adb78"], 0, [["user", "test2"]], [987654321.0, 0], null]], "successors": ["d004c8f274b9ec480a47a93c10dac5eee63adb78"]}]
227 | x f137d23bb3e1
227 | x f137d23bb3e1
228 | |
228 | | Obsfate: [{"markers": [["f137d23bb3e11dc1daeb6264fac9cb2433782e15", [], 0, [["user", "test1"]], [1234567890.0, 0], ["471f378eab4c5e25f6c77f785b27c936efb22874"]]], "successors": []}]
229 | x 471f378eab4c
229 | x 471f378eab4c
230 |/ Obsfate: [{"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"], 0, [["user", "test1"]], [1234567890.0, 0], null]], "successors": ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]}]
230 |/ Obsfate: [{"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"], 0, [["user", "test1"]], [1234567890.0, 0], null]], "successors": ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]}]
231 o ea207398892e
231 o ea207398892e
@@ -1218,7 +1218,7 b' Check templates'
1218 o f897c6137566
1218 o f897c6137566
1219 |
1219 |
1220 | @ 471f378eab4c
1220 | @ 471f378eab4c
1221 |/
1221 |/ Obsfate: pruned;
1222 o ea207398892e
1222 o ea207398892e
1223
1223
1224
1224
@@ -1635,11 +1635,11 b' Check output'
1635
1635
1636 $ hg fatelog
1636 $ hg fatelog
1637 @ 471f378eab4c
1637 @ 471f378eab4c
1638 |
1638 | Obsfate: pruned by test (at 1970-01-01 00:00 +0000);
1639 o ea207398892e
1639 o ea207398892e
1640
1640
1641 $ hg fatelog -v
1641 $ hg fatelog -v
1642 @ 471f378eab4c
1642 @ 471f378eab4c
1643 |
1643 | Obsfate: pruned by test (at 1970-01-01 00:00 +0000);
1644 o ea207398892e
1644 o ea207398892e
1645
1645
General Comments 0
You need to be logged in to leave comments. Login now