Mercurial > hg
changeset 42932:e4803231f538
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
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 14 Sep 2019 15:13:16 -0400 |
parents | 181ee2118a96 |
children | 7e9997041781 |
files | hgext/amend.py mercurial/cmdutil.py mercurial/help/config.txt relnotes/next |
diffstat | 4 files changed, 25 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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
--- 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`` -----------
--- 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 ==