##// END OF EJS Templates
graphmod: use revsets internally...
Alexander Solovyov -
r14042:9966c95b default
parent child Browse files
Show More
@@ -249,8 +249,6 b' def graphlog(ui, repo, path=None, **opts'
249 if start == nullrev:
249 if start == nullrev:
250 return
250 return
251
251
252 if path:
253 path = scmutil.canonpath(repo.root, os.getcwd(), path)
254 if path: # could be reset in canonpath
252 if path: # could be reset in canonpath
255 revdag = graphmod.filerevs(repo, path, start, stop, limit)
253 revdag = graphmod.filerevs(repo, path, start, stop, limit)
256 else:
254 else:
@@ -18,43 +18,66 b' Data depends on type.'
18 """
18 """
19
19
20 from mercurial.node import nullrev
20 from mercurial.node import nullrev
21 from mercurial.cmdutil import revrange
21
22
22 CHANGESET = 'C'
23 CHANGESET = 'C'
23
24
24 def revisions(repo, start, stop):
25 def revisions(repo, start, end):
25 """cset DAG generator yielding (id, CHANGESET, ctx, [parentids]) tuples
26 """DAG generator for revisions between start and end
26
27 This generator function walks through the revision history from revision
28 start to revision stop (which must be less than or equal to start). It
29 returns a tuple for each node. The node and parent ids are arbitrary
30 integers which identify a node in the context of the graph returned.
31 """
27 """
32 cur = start
28 revset = '%s:%s' % (start, end)
33 while cur >= stop:
29 return dagwalker(repo, revrange(repo, [revset]))
34 ctx = repo[cur]
35 parents = set([p.rev() for p in ctx.parents() if p.rev() != nullrev])
36 yield (cur, CHANGESET, ctx, sorted(parents))
37 cur -= 1
38
30
39 def filerevs(repo, path, start, stop, limit=None):
31 def filerevs(repo, path, start, stop, limit=None):
40 """file cset DAG generator yielding (id, CHANGESET, ctx, [parentids]) tuples
32 """DAG generator, which is limited by file passed
33 """
34 revset = '%s:%s and file("%s")' % (start, stop, path)
35 if limit:
36 revset = 'limit(%s, %s)' % (revset, limit)
37 return dagwalker(repo, revrange(repo, [revset]))
41
38
42 This generator function walks through the revision history of a single
39 def dagwalker(repo, revs):
43 file from revision start down to revision stop.
40 """cset DAG generator yielding (id, CHANGESET, ctx, [parentids]) tuples
41
42 This generator function walks through revisions (which should be ordered
43 from bigger to lower). It returns a tuple for each node. The node and parent
44 ids are arbitrary integers which identify a node in the context of the graph
45 returned.
44 """
46 """
45 filerev = len(repo.file(path)) - 1
47 if not revs:
46 rev = stop + 1
48 return []
47 count = 0
49
48 while filerev >= 0 and rev > stop:
50 ns = [repo[r].node() for r in revs]
49 fctx = repo.filectx(path, fileid=filerev)
51 revdag = list(nodes(repo, ns))
50 parents = set([f.linkrev() for f in fctx.parents() if f.path() == path])
52
51 rev = fctx.rev()
53 cl = repo.changelog
52 if rev <= start:
54 lowestrev = min(revs)
53 yield (rev, CHANGESET, fctx.changectx(), sorted(parents))
55 gpcache = {}
54 count += 1
56 leafs = {}
55 if count == limit:
57
56 break
58 for i, (id, c, ctx, parents) in enumerate(revdag):
57 filerev -= 1
59 mpars = [p.rev() for p in ctx.parents() if
60 p.rev() != nullrev and p.rev() not in parents]
61 grandparents = []
62
63 for mpar in mpars:
64 gp = gpcache.get(mpar) or grandparent(cl, lowestrev, revs, mpar)
65 gpcache[mpar] = gp
66 if gp is None:
67 leafs.setdefault(mpar, []).append((i, ctx))
68 else:
69 grandparents.append(gp)
70
71 if grandparents:
72 for gp in grandparents:
73 if gp not in revdag[i][3]:
74 revdag[i][3].append(gp)
75
76 for parent, leafs in leafs.iteritems():
77 for i, ctx in leafs:
78 revdag[i][3].append(parent)
79
80 return revdag
58
81
59 def nodes(repo, nodes):
82 def nodes(repo, nodes):
60 """cset DAG generator yielding (id, CHANGESET, ctx, [parentids]) tuples
83 """cset DAG generator yielding (id, CHANGESET, ctx, [parentids]) tuples
@@ -120,3 +143,78 b' def colored(dag):'
120 # Yield and move on
143 # Yield and move on
121 yield (cur, type, data, (col, color), edges)
144 yield (cur, type, data, (col, color), edges)
122 seen = next
145 seen = next
146
147
148 def grandparent(cl, lowestrev, roots, head):
149 """Return closest 'root' rev in topological path from 'roots' to 'head'.
150
151 Derived from revlog.revlog.nodesbetween, but only returns next rev
152 of topologically sorted list of all nodes N that satisfy of these
153 constraints:
154
155 1. N is a descendant of some node in 'roots'
156 2. N is an ancestor of 'head'
157 3. N is some node in 'roots' or nullrev
158
159 Every node is considered to be both a descendant and an ancestor
160 of itself, so every reachable node in 'roots' and 'head' will be
161 included in 'nodes'.
162 """
163 ancestors = set()
164 # Start at the top and keep marking parents until we're done.
165 revstotag = set([head])
166 revstotag.discard(nullrev)
167 llowestrev = max(nullrev, lowestrev)
168
169 while revstotag:
170 r = revstotag.pop()
171 # A node's revision number represents its place in a
172 # topologically sorted list of nodes.
173 if r >= llowestrev:
174 if r not in ancestors:
175 # If we are possibly a descendent of one of the roots
176 # and we haven't already been marked as an ancestor
177 ancestors.add(r) # Mark as ancestor
178 # Add non-nullrev parents to list of nodes to tag.
179 revstotag.update([p for p in cl.parentrevs(r)])
180
181 if not ancestors:
182 return
183 # Now that we have our set of ancestors, we want to remove any
184 # roots that are not ancestors.
185
186 # If one of the roots was nullrev, everything is included anyway.
187 if lowestrev > nullrev:
188 # But, since we weren't, let's recompute the lowest rev to not
189 # include roots that aren't ancestors.
190
191 # Filter out roots that aren't ancestors of heads
192 _roots = ancestors.intersection(roots)
193 if not _roots:
194 return
195 # Recompute the lowest revision
196 lowestrev = min(roots)
197 else:
198 # We are descending from nullrev, and don't need to care about
199 # any other roots.
200 lowestrev = nullrev
201 _roots = [nullrev]
202
203 # The roots are just the descendants.
204 # Don't start at nullrev since we don't want nullrev in our output list,
205 # and if nullrev shows up in descedents, empty parents will look like
206 # they're descendents.
207 lowestrevisnullrev = (lowestrev == nullrev)
208 for r in xrange(head - 1, max(lowestrev, -1) - 1, -1):
209 if lowestrevisnullrev or r in _roots:
210 pass
211 elif _roots.issuperset(cl.parentrevs(r)):
212 # A node is a descendent if either of its parents are
213 # descendents. (We seeded the dependents list with the roots
214 # up there, remember?)
215 _roots.add(r)
216 else:
217 continue
218 if r in ancestors:
219 # Only include nodes that are both descendents and ancestors.
220 return r
@@ -317,5 +317,5 b' glog'
317 glog X
317 glog X
318 $ hg glog --template '{rev}: {desc} [{branches}]\n' X
318 $ hg glog --template '{rev}: {desc} [{branches}]\n' X
319 o 2: r2 []
319 o 2: r2 []
320
320 |
321 $ cd ..
321 $ cd ..
@@ -463,115 +463,115 b' File glog:'
463 | | | date: Thu Jan 01 00:00:32 1970 +0000
463 | | | date: Thu Jan 01 00:00:32 1970 +0000
464 | | | summary: (32) expand
464 | | | summary: (32) expand
465 | | |
465 | | |
466 | o | changeset: 31:621d83e11f67
466 | o | changeset: 31:621d83e11f67
467 | | | parent: 21:d42a756af44d
467 | |\ \ parent: 21:d42a756af44d
468 | | | parent: 30:6e11cd4b648f
468 | | | | parent: 30:6e11cd4b648f
469 | | | user: test
470 | | | date: Thu Jan 01 00:00:31 1970 +0000
471 | | | summary: (31) expand
472 | | |
473 | o | changeset: 30:6e11cd4b648f
474 | |\ \ parent: 28:44ecd0b9ae99
475 | | | | parent: 29:cd9bb2be7593
476 | | | | user: test
477 | | | | date: Thu Jan 01 00:00:30 1970 +0000
478 | | | | summary: (30) expand
479 | | | |
480 | | o | changeset: 29:cd9bb2be7593
481 | | | | parent: 0:e6eb3150255d
482 | | | | user: test
483 | | | | date: Thu Jan 01 00:00:29 1970 +0000
484 | | | | summary: (29) regular commit
485 | | | |
486 | o | | changeset: 28:44ecd0b9ae99
487 | | | | parent: 1:6db2ef61d156
488 | | | | parent: 26:7f25b6c2f0b9
489 | | | | user: test
469 | | | | user: test
490 | | | | date: Thu Jan 01 00:00:28 1970 +0000
470 | | | | date: Thu Jan 01 00:00:31 1970 +0000
491 | | | | summary: (28) merge zero known
471 | | | | summary: (31) expand
492 | | | |
493 o | | | changeset: 27:886ed638191b
494 | | | | parent: 21:d42a756af44d
495 | | | | user: test
496 | | | | date: Thu Jan 01 00:00:27 1970 +0000
497 | | | | summary: (27) collapse
498 | | | |
499 | o | | changeset: 26:7f25b6c2f0b9
500 | | | | parent: 18:1aa84d96232a
501 | | | | parent: 25:91da8ed57247
502 | | | | user: test
503 | | | | date: Thu Jan 01 00:00:26 1970 +0000
504 | | | | summary: (26) merge one known; far right
505 | | | |
506 | o | | changeset: 25:91da8ed57247
507 | | | | parent: 21:d42a756af44d
508 | | | | parent: 24:a9c19a3d96b7
509 | | | | user: test
510 | | | | date: Thu Jan 01 00:00:25 1970 +0000
511 | | | | summary: (25) merge one known; far left
512 | | | |
513 | o | | changeset: 24:a9c19a3d96b7
514 | | | | parent: 0:e6eb3150255d
515 | | | | parent: 23:a01cddf0766d
516 | | | | user: test
517 | | | | date: Thu Jan 01 00:00:24 1970 +0000
518 | | | | summary: (24) merge one known; immediate right
519 | | | |
472 | | | |
520 | o | | changeset: 23:a01cddf0766d
473 | | o | changeset: 30:6e11cd4b648f
521 | | | | parent: 1:6db2ef61d156
474 | | |\ \ parent: 28:44ecd0b9ae99
522 | | | | parent: 22:e0d9cccacb5d
475 | | | | | parent: 29:cd9bb2be7593
523 | | | | user: test
476 | | | | | user: test
524 | | | | date: Thu Jan 01 00:00:23 1970 +0000
477 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
525 | | | | summary: (23) merge one known; immediate left
478 | | | | | summary: (30) expand
526 | | | |
479 | | | | |
527 | o | | changeset: 22:e0d9cccacb5d
480 | | | o | changeset: 29:cd9bb2be7593
528 |/ / / parent: 18:1aa84d96232a
481 | | | | | parent: 0:e6eb3150255d
529 | | | parent: 21:d42a756af44d
482 | | | | | user: test
530 | | | user: test
483 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
531 | | | date: Thu Jan 01 00:00:22 1970 +0000
484 | | | | | summary: (29) regular commit
532 | | | summary: (22) merge two known; one far left, one far right
485 | | | | |
533 | | |
486 | | o | | changeset: 28:44ecd0b9ae99
534 o | | changeset: 21:d42a756af44d
487 | | |\ \ \ parent: 1:6db2ef61d156
535 |\ \ \ parent: 19:31ddc2c1573b
488 | | | | | | parent: 26:7f25b6c2f0b9
536 | | | | parent: 20:d30ed6450e32
489 | | | | | | user: test
537 | | | | user: test
490 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
538 | | | | date: Thu Jan 01 00:00:21 1970 +0000
491 | | | | | | summary: (28) merge zero known
539 | | | | summary: (21) expand
492 | | | | | |
493 o | | | | | changeset: 27:886ed638191b
494 |/ / / / / parent: 21:d42a756af44d
495 | | | | | user: test
496 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
497 | | | | | summary: (27) collapse
498 | | | | |
499 | | o---+ changeset: 26:7f25b6c2f0b9
500 | | | | | parent: 18:1aa84d96232a
501 | | | | | parent: 25:91da8ed57247
502 | | | | | user: test
503 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
504 | | | | | summary: (26) merge one known; far right
505 | | | | |
506 +---o | | changeset: 25:91da8ed57247
507 | | | | | parent: 21:d42a756af44d
508 | | | | | parent: 24:a9c19a3d96b7
509 | | | | | user: test
510 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
511 | | | | | summary: (25) merge one known; far left
512 | | | | |
513 | | o | | changeset: 24:a9c19a3d96b7
514 | | |\| | parent: 0:e6eb3150255d
515 | | | | | parent: 23:a01cddf0766d
516 | | | | | user: test
517 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
518 | | | | | summary: (24) merge one known; immediate right
519 | | | | |
520 | | o | | changeset: 23:a01cddf0766d
521 | |/| | | parent: 1:6db2ef61d156
522 | | | | | parent: 22:e0d9cccacb5d
523 | | | | | user: test
524 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
525 | | | | | summary: (23) merge one known; immediate left
526 | | | | |
527 +---o---+ changeset: 22:e0d9cccacb5d
528 | | | | parent: 18:1aa84d96232a
529 | | / / parent: 21:d42a756af44d
530 | | | | user: test
531 | | | | date: Thu Jan 01 00:00:22 1970 +0000
532 | | | | summary: (22) merge two known; one far left, one far right
540 | | | |
533 | | | |
541 | o---+ changeset: 20:d30ed6450e32
534 o | | | changeset: 21:d42a756af44d
542 | | | parent: 0:e6eb3150255d
535 |\ \ \ \ parent: 19:31ddc2c1573b
543 | / / parent: 18:1aa84d96232a
536 | | | | | parent: 20:d30ed6450e32
544 | | | user: test
537 | | | | | user: test
545 | | | date: Thu Jan 01 00:00:20 1970 +0000
538 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
546 | | | summary: (20) merge two known; two far right
539 | | | | | summary: (21) expand
547 | | |
540 | | | | |
548 o | | changeset: 19:31ddc2c1573b
541 | o---+-+ changeset: 20:d30ed6450e32
549 |\ \ \ parent: 15:1dda3f72782d
542 | | | | parent: 0:e6eb3150255d
550 | | | | parent: 17:44765d7c06e0
543 | / / / parent: 18:1aa84d96232a
551 | | | | user: test
544 | | | | user: test
552 | | | | date: Thu Jan 01 00:00:19 1970 +0000
545 | | | | date: Thu Jan 01 00:00:20 1970 +0000
553 | | | | summary: (19) expand
546 | | | | summary: (20) merge two known; two far right
554 | | | |
547 | | | |
555 +-----o changeset: 18:1aa84d96232a
548 o | | | changeset: 19:31ddc2c1573b
556 | | | parent: 1:6db2ef61d156
549 |\ \ \ \ parent: 15:1dda3f72782d
557 | | | parent: 15:1dda3f72782d
550 | | | | | parent: 17:44765d7c06e0
558 | | | user: test
551 | | | | | user: test
559 | | | date: Thu Jan 01 00:00:18 1970 +0000
552 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
560 | | | summary: (18) merge two known; two far left
553 | | | | | summary: (19) expand
561 | | |
554 | | | | |
562 | o | changeset: 17:44765d7c06e0
555 +---+---o changeset: 18:1aa84d96232a
563 | |\ \ parent: 12:86b91144a6e9
556 | | | | parent: 1:6db2ef61d156
564 | | | | parent: 16:3677d192927d
557 | | | | parent: 15:1dda3f72782d
565 | | | | user: test
558 | | | | user: test
566 | | | | date: Thu Jan 01 00:00:17 1970 +0000
559 | | | | date: Thu Jan 01 00:00:18 1970 +0000
567 | | | | summary: (17) expand
560 | | | | summary: (18) merge two known; two far left
568 | | | |
561 | | | |
569 | | o | changeset: 16:3677d192927d
562 | o | | changeset: 17:44765d7c06e0
570 | | | | parent: 0:e6eb3150255d
563 | |\ \ \ parent: 12:86b91144a6e9
571 | | | | parent: 1:6db2ef61d156
564 | | | | | parent: 16:3677d192927d
572 | | | | user: test
565 | | | | | user: test
573 | | | | date: Thu Jan 01 00:00:16 1970 +0000
566 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
574 | | | | summary: (16) merge two known; one immediate right, one near right
567 | | | | | summary: (17) expand
568 | | | | |
569 | | o---+ changeset: 16:3677d192927d
570 | | | | | parent: 0:e6eb3150255d
571 | | |/ / parent: 1:6db2ef61d156
572 | | | | user: test
573 | | | | date: Thu Jan 01 00:00:16 1970 +0000
574 | | | | summary: (16) merge two known; one immediate right, one near right
575 | | | |
575 | | | |
576 o | | | changeset: 15:1dda3f72782d
576 o | | | changeset: 15:1dda3f72782d
577 |\ \ \ \ parent: 13:22d8966a97e3
577 |\ \ \ \ parent: 13:22d8966a97e3
@@ -580,9 +580,9 b' File glog:'
580 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
580 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
581 | | | | | summary: (15) expand
581 | | | | | summary: (15) expand
582 | | | | |
582 | | | | |
583 | o | | | changeset: 14:8eac370358ef
583 | o-----+ changeset: 14:8eac370358ef
584 | |/ / / parent: 0:e6eb3150255d
584 | | | | | parent: 0:e6eb3150255d
585 | | | | parent: 12:86b91144a6e9
585 | |/ / / parent: 12:86b91144a6e9
586 | | | | user: test
586 | | | | user: test
587 | | | | date: Thu Jan 01 00:00:14 1970 +0000
587 | | | | date: Thu Jan 01 00:00:14 1970 +0000
588 | | | | summary: (14) merge two known; one immediate right, one far right
588 | | | | summary: (14) merge two known; one immediate right, one far right
@@ -595,72 +595,72 b' File glog:'
595 | | | | | summary: (13) expand
595 | | | | | summary: (13) expand
596 | | | | |
596 | | | | |
597 +---o | | changeset: 12:86b91144a6e9
597 +---o | | changeset: 12:86b91144a6e9
598 | | / / parent: 1:6db2ef61d156
598 | | |/ / parent: 1:6db2ef61d156
599 | | | | parent: 9:7010c0af0a35
599 | | | | parent: 9:7010c0af0a35
600 | | | | user: test
600 | | | | user: test
601 | | | | date: Thu Jan 01 00:00:12 1970 +0000
601 | | | | date: Thu Jan 01 00:00:12 1970 +0000
602 | | | | summary: (12) merge two known; one immediate right, one far left
602 | | | | summary: (12) merge two known; one immediate right, one far left
603 | | | |
603 | | | |
604 | o | | changeset: 11:832d76e6bdf2
604 | o | | changeset: 11:832d76e6bdf2
605 | | | | parent: 6:b105a072e251
605 | |\ \ \ parent: 6:b105a072e251
606 | | | | parent: 10:74c64d036d72
606 | | | | | parent: 10:74c64d036d72
607 | | | | user: test
607 | | | | | user: test
608 | | | | date: Thu Jan 01 00:00:11 1970 +0000
608 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
609 | | | | summary: (11) expand
609 | | | | | summary: (11) expand
610 | | | |
610 | | | | |
611 | o | | changeset: 10:74c64d036d72
611 | | o---+ changeset: 10:74c64d036d72
612 | | | | parent: 0:e6eb3150255d
612 | | | | | parent: 0:e6eb3150255d
613 | | | | parent: 6:b105a072e251
613 | |/ / / parent: 6:b105a072e251
614 | | | | user: test
614 | | | | user: test
615 | | | | date: Thu Jan 01 00:00:10 1970 +0000
615 | | | | date: Thu Jan 01 00:00:10 1970 +0000
616 | | | | summary: (10) merge two known; one immediate left, one near right
616 | | | | summary: (10) merge two known; one immediate left, one near right
617 | | | |
617 | | | |
618 o | | | changeset: 9:7010c0af0a35
618 o | | | changeset: 9:7010c0af0a35
619 | | | | parent: 7:b632bb1b1224
619 |\ \ \ \ parent: 7:b632bb1b1224
620 | | | | parent: 8:7a0b11f71937
620 | | | | | parent: 8:7a0b11f71937
621 | | | | user: test
621 | | | | | user: test
622 | | | | date: Thu Jan 01 00:00:09 1970 +0000
622 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
623 | | | | summary: (9) expand
623 | | | | | summary: (9) expand
624 | | | |
624 | | | | |
625 o | | | changeset: 8:7a0b11f71937
625 | o-----+ changeset: 8:7a0b11f71937
626 | | | | parent: 0:e6eb3150255d
626 | | | | | parent: 0:e6eb3150255d
627 | | | | parent: 7:b632bb1b1224
627 |/ / / / parent: 7:b632bb1b1224
628 | | | | user: test
628 | | | | user: test
629 | | | | date: Thu Jan 01 00:00:08 1970 +0000
629 | | | | date: Thu Jan 01 00:00:08 1970 +0000
630 | | | | summary: (8) merge two known; one immediate left, one far right
630 | | | | summary: (8) merge two known; one immediate left, one far right
631 | | | |
631 | | | |
632 o | | | changeset: 7:b632bb1b1224
632 o | | | changeset: 7:b632bb1b1224
633 | | | | parent: 2:3d9a33b8d1e1
633 |\ \ \ \ parent: 2:3d9a33b8d1e1
634 | | | | parent: 5:4409d547b708
634 | | | | | parent: 5:4409d547b708
635 | | | | user: test
635 | | | | | user: test
636 | | | | date: Thu Jan 01 00:00:07 1970 +0000
636 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
637 | | | | summary: (7) expand
637 | | | | | summary: (7) expand
638 | | | | |
639 +---o | | changeset: 6:b105a072e251
640 | |/ / / parent: 2:3d9a33b8d1e1
641 | | | | parent: 5:4409d547b708
642 | | | | user: test
643 | | | | date: Thu Jan 01 00:00:06 1970 +0000
644 | | | | summary: (6) merge two known; one immediate left, one far left
638 | | | |
645 | | | |
639 | o | | changeset: 6:b105a072e251
646 | o | | changeset: 5:4409d547b708
640 |/ / / parent: 2:3d9a33b8d1e1
647 | |\ \ \ parent: 3:27eef8ed80b4
641 | | | parent: 5:4409d547b708
648 | | | | | parent: 4:26a8bac39d9f
642 | | | user: test
649 | | | | | user: test
643 | | | date: Thu Jan 01 00:00:06 1970 +0000
650 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
644 | | | summary: (6) merge two known; one immediate left, one far left
651 | | | | | summary: (5) expand
645 | | |
652 | | | | |
646 o | | changeset: 5:4409d547b708
653 | | o | | changeset: 4:26a8bac39d9f
647 | | | parent: 3:27eef8ed80b4
654 | |/|/ / parent: 1:6db2ef61d156
648 | | | parent: 4:26a8bac39d9f
655 | | | | parent: 3:27eef8ed80b4
649 | | | user: test
656 | | | | user: test
650 | | | date: Thu Jan 01 00:00:05 1970 +0000
657 | | | | date: Thu Jan 01 00:00:04 1970 +0000
651 | | | summary: (5) expand
658 | | | | summary: (4) merge two known; one immediate left, one immediate right
652 | | |
659 | | | |
653 o | | changeset: 4:26a8bac39d9f
660 | o | | changeset: 3:27eef8ed80b4
654 | | | parent: 1:6db2ef61d156
661 |/ / / user: test
655 | | | parent: 3:27eef8ed80b4
662 | | | date: Thu Jan 01 00:00:03 1970 +0000
656 | | | user: test
663 | | | summary: (3) collapse
657 | | | date: Thu Jan 01 00:00:04 1970 +0000
658 | | | summary: (4) merge two known; one immediate left, one immediate right
659 | | |
660 o | | changeset: 3:27eef8ed80b4
661 | | | user: test
662 | | | date: Thu Jan 01 00:00:03 1970 +0000
663 | | | summary: (3) collapse
664 | | |
664 | | |
665 o | | changeset: 2:3d9a33b8d1e1
665 o | | changeset: 2:3d9a33b8d1e1
666 |/ / user: test
666 |/ / user: test
@@ -733,10 +733,10 b' File log with revs != cset revs:'
733 | summary: more
733 | summary: more
734 |
734 |
735 o changeset: 1:5ac72c0599bf
735 o changeset: 1:5ac72c0599bf
736 user: test
736 | user: test
737 date: Thu Jan 01 00:00:00 1970 +0000
737 | date: Thu Jan 01 00:00:00 1970 +0000
738 summary: two
738 | summary: two
739
739 |
740
740
741 Issue1896: File log with explicit style
741 Issue1896: File log with explicit style
742 $ hg glog --style=default one
742 $ hg glog --style=default one
General Comments 0
You need to be logged in to leave comments. Login now