Mercurial > hg
changeset 15240:bfb93963bb39
graft: add user, date, and tool options
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 12 Oct 2011 18:46:23 -0500 |
parents | f5d9d0d0f588 |
children | e4d135632f6d |
files | mercurial/commands.py tests/test-debugcomplete.t |
diffstat | 2 files changed, 29 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Wed Oct 12 18:46:03 2011 -0500 +++ b/mercurial/commands.py Wed Oct 12 18:46:23 2011 -0500 @@ -2447,8 +2447,14 @@ repo[None].forget(forget) return errs -@command('graft', - [('e', 'edit', False, _('invoke editor on commit messages'))], +@command( + 'graft', + [('e', 'edit', False, _('invoke editor on commit messages')), + ('D', 'currentdate', False, + _('record the current date as commit date')), + ('U', 'currentuser', False, + _('record the current user as committer'), _('DATE'))] + + commitopts2 + mergetoolopts, _('[OPTION]... REVISION...')) def graft(ui, repo, rev, *revs, **opts): '''copy changes from other branches onto the current branch @@ -2466,6 +2472,11 @@ cmdutil.bailifchanged(repo) + if not opts.get('user') and opts.get('currentuser'): + opts['user'] = ui.username() + if not opts.get('date') and opts.get('currentdate'): + opts['date'] = "%d %d" % util.makedate() + editor = None if opts.get('edit'): editor = cmdutil.commitforceeditor @@ -2502,8 +2513,13 @@ current = repo['.'] ui.debug('grafting revision %s', ctx.rev()) # perform the graft merge with p1(rev) as 'ancestor' - stats = mergemod.update(repo, ctx.node(), True, True, False, - ctx.p1().node()) + try: + # ui.forcemerge is an internal variable, do not document + repo.ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) + stats = mergemod.update(repo, ctx.node(), True, True, False, + ctx.p1().node()) + finally: + ui.setconfig('ui', 'forcemerge', '') # drop the second merge parent repo.dirstate.setparents(current.node(), nullid) repo.dirstate.write() @@ -2515,8 +2531,14 @@ hint=_('use hg resolve and hg graft --continue')) # commit extra = {'source': ctx.hex()} - repo.commit(text=ctx.description(), user=ctx.user(), - date=ctx.date(), extra=extra, editor=editor) + user = ctx.user() + if opts.get('user'): + user = opts['user'] + date = ctx.date() + if opts.get('date'): + date = opts['date'] + repo.commit(text=ctx.description(), user=user, + date=date, extra=extra, editor=editor) return 0
--- a/tests/test-debugcomplete.t Wed Oct 12 18:46:03 2011 -0500 +++ b/tests/test-debugcomplete.t Wed Oct 12 18:46:23 2011 -0500 @@ -243,7 +243,7 @@ debugsub: rev debugwalk: include, exclude debugwireargs: three, four, five, ssh, remotecmd, insecure - graft: edit + graft: edit, currentdate, currentuser, date, user, tool grep: print0, all, text, follow, ignore-case, files-with-matches, line-number, rev, user, date, include, exclude heads: rev, topo, active, closed, style, template help: extension, command