diff --git a/hgext/uncommit.py b/hgext/uncommit.py --- a/hgext/uncommit.py +++ b/hgext/uncommit.py @@ -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] diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -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) diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -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 diff --git a/tests/test-uncommit.t b/tests/test-uncommit.t --- a/tests/test-uncommit.t +++ b/tests/test-uncommit.t @@ -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)