diff mercurial/cmdutil.py @ 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 a65c4715fb5d
children a50661567f83
line wrap: on
line diff
--- 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)