# HG changeset patch # User Matt Harbison # Date 1568488396 14400 # Node ID e4803231f538f73700dfb66e27b1d75279b19e62 # Parent 181ee2118a96c4b52bbd6d7b5a47e87f2e1d77e9 amend: add option to update to the current user This is also from the evolve extension's version of amend. A side effect of this refactoring is for uncommit to support `rewrite.update-timestamp`. Differential Revision: https://phab.mercurial-scm.org/D6853 diff -r 181ee2118a96 -r e4803231f538 hgext/amend.py --- a/hgext/amend.py Wed Sep 11 15:03:08 2019 -0700 +++ b/hgext/amend.py Sat Sep 14 15:13:16 2019 -0400 @@ -36,9 +36,8 @@ ('e', 'edit', None, _('invoke editor on commit messages')), ('i', 'interactive', None, _('use interactive mode')), ('n', 'note', '', _('store a note on the amend')), - ('D', 'currentdate', None, - _('record the current date as commit date')), - ] + cmdutil.walkopts + cmdutil.commitopts + cmdutil.commitopts2, + ] + cmdutil.walkopts + cmdutil.commitopts + cmdutil.commitopts2 + + cmdutil.commitopts3, _('[OPTION]... [FILE]...'), helpcategory=command.CATEGORY_COMMITTING, inferrepo=True) diff -r 181ee2118a96 -r e4803231f538 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Wed Sep 11 15:03:08 2019 -0700 +++ b/mercurial/cmdutil.py Sat Sep 14 15:13:16 2019 -0400 @@ -184,6 +184,9 @@ def resolvecommitoptions(ui, opts): """modify commit options dict to handle related options + + The return value indicates that ``rewrite.update-timestamp`` is the reason + the ``date`` option is set. """ if opts.get('date') and opts.get('currentdate'): raise error.Abort(_('--date and --currentdate are mutually ' @@ -192,12 +195,21 @@ raise error.Abort(_('--user and --currentuser are mutually ' 'exclusive')) - # N.B. this is extremely similar to setupheaderopts() in mq.py + datemaydiffer = False # date-only change should be ignored? + if opts.get(b'currentdate'): opts[b'date'] = b'%d %d' % dateutil.makedate() + elif (not opts.get('date') + and ui.configbool('rewrite', 'update-timestamp') + and opts.get('currentdate') is None): + opts[b'date'] = b'%d %d' % dateutil.makedate() + datemaydiffer = True + if opts.get(b'currentuser'): opts[b'user'] = ui.username() + return datemaydiffer + def ishunk(x): hunkclasses = (crecordmod.uihunk, patch.recordhunk) return isinstance(x, hunkclasses) @@ -2470,22 +2482,13 @@ # Also update it from the from the wctx extra.update(wctx.extra()) - user = opts.get('user') or old.user() - - datemaydiffer = False # date-only change should be ignored? - if opts.get('date') and opts.get('currentdate'): - raise error.Abort(_('--date and --currentdate are mutually ' - 'exclusive')) + # date-only change should be ignored? + datemaydiffer = resolvecommitoptions(ui, opts) + + date = old.date() if opts.get('date'): date = dateutil.parsedate(opts.get('date')) - elif opts.get('currentdate'): - date = dateutil.makedate() - elif (ui.configbool('rewrite', 'update-timestamp') - and opts.get('currentdate') is None): - date = dateutil.makedate() - datemaydiffer = True - else: - date = old.date() + user = opts.get('user') or old.user() if len(old.parents()) > 1: # ctx.files() isn't reliable for merges, so fall back to the diff -r 181ee2118a96 -r e4803231f538 mercurial/help/config.txt --- a/mercurial/help/config.txt Wed Sep 11 15:03:08 2019 -0700 +++ b/mercurial/help/config.txt Sat Sep 14 15:13:16 2019 -0400 @@ -1853,7 +1853,8 @@ ``update-timestamp`` If true, updates the date and time of the changeset to current. It is only - applicable for hg amend in current version. + applicable for `hg amend`, `hg commit --amend` and `hg uncommit` in the + current version. ``storage`` ----------- diff -r 181ee2118a96 -r e4803231f538 relnotes/next --- a/relnotes/next Wed Sep 11 15:03:08 2019 -0700 +++ b/relnotes/next Sat Sep 14 15:13:16 2019 -0400 @@ -1,5 +1,8 @@ == New Features == + * The amend extension supports the `--currentuser` argument. + + * The uncommit extension supports the `rewrite.update-timestamp` config option. == New Experimental Features ==