Patchwork D6842: uncommit: make -D/--date and -U/--user mutually exclusive

login
register
mail settings
Submitter phabricator
Date Sept. 11, 2019, 3:24 a.m.
Message ID <differential-rev-PHID-DREV-ujqgdov3s3weny566dsq-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/41637/
State Superseded
Headers show

Comments

phabricator - Sept. 11, 2019, 3:24 a.m.
mharbison72 created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  This is how amend and graft work (but not MQ).  I'm not sure why this didn't
  work for me when I first tried it.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6842

AFFECTED FILES
  mercurial/cmdutil.py
  tests/test-uncommit.t

CHANGE DETAILS




To: mharbison72, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/tests/test-uncommit.t b/tests/test-uncommit.t
--- a/tests/test-uncommit.t
+++ b/tests/test-uncommit.t
@@ -549,10 +549,18 @@ 
   date:        Mon Jun 30 12:12:12 1980 +0000
   summary:     uncommit with message
   
+Bad option combinations
+
+  $ hg rollback -q --config ui.rollback=True
+  $ hg uncommit -U --user 'user'
+  abort: --user and --currentuser are mutually exclusive
+  [255]
+  $ hg uncommit -D --date today
+  abort: --date and --currentdate are mutually exclusive
+  [255]
 
 `uncommit <dir>` and `cd <dir> && uncommit .` behave the same...
 
-  $ hg rollback -q --config ui.rollback=True
   $ echo 2 > dir/file2.txt
   $ hg ci -Aqm 'add file2 in directory'
   $ hg uncommit dir
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -185,10 +185,17 @@ 
 def resolvecommitoptions(ui, opts):
     """modify commit options dict to handle related options
     """
+    if opts.get('date') and opts.get('currentdate'):
+        raise error.Abort(_('--date and --currentdate are mutually '
+                            'exclusive'))
+    if opts.get(b'user') and opts.get(b'currentuser'):
+        raise error.Abort(_('--user and --currentuser are mutually '
+                            'exclusive'))
+
     # N.B. this is extremely similar to setupheaderopts() in mq.py
-    if not opts.get(b'date') and opts.get(b'currentdate'):
+    if opts.get(b'currentdate'):
         opts[b'date'] = b'%d %d' % dateutil.makedate()
-    if not opts.get(b'user') and opts.get(b'currentuser'):
+    if opts.get(b'currentuser'):
         opts[b'user'] = ui.username()
 
 def ishunk(x):