Mercurial > hg
changeset 42903:66048f6b5d0d
uncommit: add options to update to the current user or current date
These are also from the evolve extension's version of uncommit.
I tried adding validation that both forms of user or date can't be specified at
the same time, but that fails because these show up in `opts` with a None value
whether or not the option was given on the command line. Presumably that means
the conditional in `resolvecommitoptions` could be simplified. But this is how
both evolve and MQ handle it.
Differential Revision: https://phab.mercurial-scm.org/D6828
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 07 Sep 2019 23:20:11 -0400 |
parents | ff1ff2aae132 |
children | d26a6706b070 |
files | hgext/uncommit.py mercurial/cmdutil.py mercurial/commands.py tests/test-uncommit.t |
diffstat | 4 files changed, 23 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/uncommit.py Sat Sep 07 13:44:29 2019 -0400 +++ b/hgext/uncommit.py Sat Sep 07 23:20:11 2019 -0400 @@ -112,7 +112,8 @@ [('', 'keep', None, _('allow an empty commit after uncommiting')), ('', 'allow-dirty-working-copy', False, _('allow uncommit with outstanding changes')) - ] + commands.walkopts + commands.commitopts + commands.commitopts2, + ] + commands.walkopts + commands.commitopts + commands.commitopts2 + + commands.commitopts3, _('[OPTION]... [FILE]...'), helpcategory=command.CATEGORY_CHANGE_MANAGEMENT) def uncommit(ui, repo, *pats, **opts): @@ -128,6 +129,8 @@ """ opts = pycompat.byteskwargs(opts) + cmdutil.resolvecommitoptions(ui, opts) + with repo.wlock(), repo.lock(): m, a, r, d = repo.status()[:4]
--- a/mercurial/cmdutil.py Sat Sep 07 13:44:29 2019 -0400 +++ b/mercurial/cmdutil.py Sat Sep 07 23:20:11 2019 -0400 @@ -100,6 +100,13 @@ _('record the specified user as committer'), _('USER')), ] +commitopts3 = [ + (b'D', b'current-date', None, + _(b'record the current date as commit date')), + (b'U', b'current-user', None, + _(b'record the current user as committer')), +] + formatteropts = [ ('T', 'template', '', _('display with template'), _('TEMPLATE')), @@ -175,6 +182,15 @@ # editor text _linebelow = "^HG: ------------------------ >8 ------------------------$" +def resolvecommitoptions(ui, opts): + """modify commit options dict to handle related options + """ + # N.B. this is extremely similar to setupheaderopts() in mq.py + if not opts.get(b'date') and opts.get(b'current_date'): + opts[b'date'] = b'%d %d' % dateutil.makedate() + if not opts.get(b'user') and opts.get(b'current_user'): + opts[b'user'] = ui.username() + def ishunk(x): hunkclasses = (crecordmod.uihunk, patch.recordhunk) return isinstance(x, hunkclasses)
--- a/mercurial/commands.py Sat Sep 07 13:44:29 2019 -0400 +++ b/mercurial/commands.py Sat Sep 07 23:20:11 2019 -0400 @@ -118,6 +118,7 @@ walkopts = cmdutil.walkopts commitopts = cmdutil.commitopts commitopts2 = cmdutil.commitopts2 +commitopts3 = cmdutil.commitopts3 formatteropts = cmdutil.formatteropts templateopts = cmdutil.templateopts logopts = cmdutil.logopts
--- a/tests/test-uncommit.t Sat Sep 07 13:44:29 2019 -0400 +++ b/tests/test-uncommit.t Sat Sep 07 23:20:11 2019 -0400 @@ -42,6 +42,8 @@ -l --logfile FILE read commit message from file -d --date DATE record the specified date as commit date -u --user USER record the specified user as committer + -D --current-date record the current date as commit date + -U --current-user record the current user as committer (some details hidden, use --verbose to show complete help)