##// END OF EJS Templates
graphmod/graphlog: move log walks to graphmod
Peter Arrenbrecht -
r8836:11ff3495 default
parent child Browse files
Show More
@@ -18,41 +18,7 b' from mercurial.commands import templateo'
18 from mercurial.i18n import _
18 from mercurial.i18n import _
19 from mercurial.node import nullrev
19 from mercurial.node import nullrev
20 from mercurial import bundlerepo, changegroup, cmdutil, commands, extensions
20 from mercurial import bundlerepo, changegroup, cmdutil, commands, extensions
21 from mercurial import hg, url, util
21 from mercurial import hg, url, util, graphmod
22
23 def revisions(repo, start, stop):
24 """cset DAG generator yielding (rev, node, [parents]) tuples
25
26 This generator function walks through the revision history from revision
27 start to revision stop (which must be less than or equal to start).
28 """
29 assert start >= stop
30 cur = start
31 while cur >= stop:
32 ctx = repo[cur]
33 parents = [p.rev() for p in ctx.parents() if p.rev() != nullrev]
34 parents.sort()
35 yield (ctx, parents)
36 cur -= 1
37
38 def filerevs(repo, path, start, stop):
39 """file cset DAG generator yielding (rev, node, [parents]) tuples
40
41 This generator function walks through the revision history of a single
42 file from revision start to revision stop (which must be less than or
43 equal to start).
44 """
45 assert start >= stop
46 filerev = len(repo.file(path)) - 1
47 while filerev >= 0:
48 fctx = repo.filectx(path, fileid=filerev)
49 parents = [f.linkrev() for f in fctx.parents() if f.path() == path]
50 parents.sort()
51 if fctx.rev() <= start:
52 yield (fctx, parents)
53 if fctx.rev() <= stop:
54 break
55 filerev -= 1
56
22
57 def grapher(nodes):
23 def grapher(nodes):
58 """grapher for asciigraph on a list of nodes and their parents
24 """grapher for asciigraph on a list of nodes and their parents
@@ -278,9 +244,9 b' def graphlog(ui, repo, path=None, **opts'
278 if path:
244 if path:
279 path = util.canonpath(repo.root, os.getcwd(), path)
245 path = util.canonpath(repo.root, os.getcwd(), path)
280 if path: # could be reset in canonpath
246 if path: # could be reset in canonpath
281 revdag = filerevs(repo, path, start, stop)
247 revdag = graphmod.filerevs(repo, path, start, stop)
282 else:
248 else:
283 revdag = revisions(repo, start, stop)
249 revdag = graphmod.revisions(repo, start, stop)
284
250
285 graphdag = graphabledag(ui, repo, revdag, opts)
251 graphdag = graphabledag(ui, repo, revdag, opts)
286 ascii(ui, grapher(graphdag))
252 ascii(ui, grapher(graphdag))
@@ -8,6 +8,40 b''
8
8
9 from node import nullrev
9 from node import nullrev
10
10
11 def revisions(repo, start, stop):
12 """cset DAG generator yielding (rev, node, [parents]) tuples
13
14 This generator function walks through the revision history from revision
15 start to revision stop (which must be less than or equal to start).
16 """
17 assert start >= stop
18 cur = start
19 while cur >= stop:
20 ctx = repo[cur]
21 parents = [p.rev() for p in ctx.parents() if p.rev() != nullrev]
22 parents.sort()
23 yield (ctx, parents)
24 cur -= 1
25
26 def filerevs(repo, path, start, stop):
27 """file cset DAG generator yielding (rev, node, [parents]) tuples
28
29 This generator function walks through the revision history of a single
30 file from revision start to revision stop (which must be less than or
31 equal to start).
32 """
33 assert start >= stop
34 filerev = len(repo.file(path)) - 1
35 while filerev >= 0:
36 fctx = repo.filectx(path, fileid=filerev)
37 parents = [f.linkrev() for f in fctx.parents() if f.path() == path]
38 parents.sort()
39 if fctx.rev() <= start:
40 yield (fctx, parents)
41 if fctx.rev() <= stop:
42 break
43 filerev -= 1
44
11 def graph(repo, start_rev, stop_rev):
45 def graph(repo, start_rev, stop_rev):
12 """incremental revision grapher
46 """incremental revision grapher
13
47
General Comments 0
You need to be logged in to leave comments. Login now