mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
graphlog: implement --copies
This commit is contained in:
parent
598d070281
commit
51f38c7a7c
@ -17,7 +17,7 @@ from mercurial.commands import templateopts
|
|||||||
from mercurial.i18n import _
|
from mercurial.i18n import _
|
||||||
from mercurial.node import nullrev
|
from mercurial.node import nullrev
|
||||||
from mercurial import cmdutil, commands, extensions, scmutil
|
from mercurial import cmdutil, commands, extensions, scmutil
|
||||||
from mercurial import hg, util, graphmod
|
from mercurial import hg, util, graphmod, templatekw
|
||||||
|
|
||||||
cmdtable = {}
|
cmdtable = {}
|
||||||
command = cmdutil.command(cmdtable)
|
command = cmdutil.command(cmdtable)
|
||||||
@ -237,7 +237,7 @@ def get_revs(repo, rev_opt):
|
|||||||
return (len(repo) - 1, 0)
|
return (len(repo) - 1, 0)
|
||||||
|
|
||||||
def check_unsupported_flags(pats, opts):
|
def check_unsupported_flags(pats, opts):
|
||||||
for op in ["copies", "newest_first"]:
|
for op in ["newest_first"]:
|
||||||
if op in opts and opts[op]:
|
if op in opts and opts[op]:
|
||||||
raise util.Abort(_("-G/--graph option is incompatible with --%s")
|
raise util.Abort(_("-G/--graph option is incompatible with --%s")
|
||||||
% op.replace("_", "-"))
|
% op.replace("_", "-"))
|
||||||
@ -350,11 +350,18 @@ def revset(repo, pats, opts):
|
|||||||
revset = 'all()'
|
revset = 'all()'
|
||||||
return revset
|
return revset
|
||||||
|
|
||||||
def generate(ui, dag, displayer, showparents, edgefn):
|
def generate(ui, dag, displayer, showparents, edgefn, getrenamed=None):
|
||||||
seen, state = [], asciistate()
|
seen, state = [], asciistate()
|
||||||
for rev, type, ctx, parents in dag:
|
for rev, type, ctx, parents in dag:
|
||||||
char = ctx.node() in showparents and '@' or 'o'
|
char = ctx.node() in showparents and '@' or 'o'
|
||||||
displayer.show(ctx)
|
copies = None
|
||||||
|
if getrenamed and ctx.rev():
|
||||||
|
copies = []
|
||||||
|
for fn in ctx.files():
|
||||||
|
rename = getrenamed(fn, ctx.rev())
|
||||||
|
if rename:
|
||||||
|
copies.append((fn, rename[0]))
|
||||||
|
displayer.show(ctx, copies=copies)
|
||||||
lines = displayer.hunk.pop(rev).split('\n')[:-1]
|
lines = displayer.hunk.pop(rev).split('\n')[:-1]
|
||||||
displayer.flush(rev)
|
displayer.flush(rev)
|
||||||
edges = edgefn(type, char, lines, seen, rev, parents)
|
edges = edgefn(type, char, lines, seen, rev, parents)
|
||||||
@ -387,9 +394,15 @@ def graphlog(ui, repo, *pats, **opts):
|
|||||||
revs = revs[:limit]
|
revs = revs[:limit]
|
||||||
revdag = graphmod.dagwalker(repo, revs)
|
revdag = graphmod.dagwalker(repo, revs)
|
||||||
|
|
||||||
|
getrenamed = None
|
||||||
|
if opts.get('copies'):
|
||||||
|
endrev = None
|
||||||
|
if opts.get('rev'):
|
||||||
|
endrev = max(scmutil.revrange(repo, opts.get('rev'))) + 1
|
||||||
|
getrenamed = templatekw.getrenamedfn(repo, endrev=endrev)
|
||||||
displayer = show_changeset(ui, repo, opts, buffered=True)
|
displayer = show_changeset(ui, repo, opts, buffered=True)
|
||||||
showparents = [ctx.node() for ctx in repo[None].parents()]
|
showparents = [ctx.node() for ctx in repo[None].parents()]
|
||||||
generate(ui, revdag, displayer, showparents, asciiedges)
|
generate(ui, revdag, displayer, showparents, asciiedges, getrenamed)
|
||||||
|
|
||||||
def graphrevs(repo, nodes, opts):
|
def graphrevs(repo, nodes, opts):
|
||||||
limit = cmdutil.loglimit(opts)
|
limit = cmdutil.loglimit(opts)
|
||||||
|
@ -1642,3 +1642,21 @@ Cannot compare with log --follow-first FILE as it never worked
|
|||||||
o | 5 add another e
|
o | 5 add another e
|
||||||
| |
|
| |
|
||||||
|
|
||||||
|
Test --copies
|
||||||
|
|
||||||
|
$ hg log -G --copies --template "{rev} {desc|firstline} \
|
||||||
|
> copies: {file_copies_switch}\n"
|
||||||
|
@ 6 merge 5 and 4 copies:
|
||||||
|
|\
|
||||||
|
| o 5 add another e copies:
|
||||||
|
| |
|
||||||
|
o | 4 mv dir/b e copies: e (dir/b)
|
||||||
|
|/
|
||||||
|
o 3 mv a b; add d copies: b (a)g (f)
|
||||||
|
|
|
||||||
|
o 2 mv b dir/b copies: dir/b (b)
|
||||||
|
|
|
||||||
|
o 1 copy a b copies: b (a)g (f)
|
||||||
|
|
|
||||||
|
o 0 add a copies:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user