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