changeset 42936: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 ==