uncommit: don't allow bare uncommit on dirty working directory
authorPulkit Goyal <7895pulkit@gmail.com>
Wed, 20 Sep 2017 02:18:01 +0530
changeset 34284 624c53e4121d
parent 34283 f94442d46984
child 34285 7b1e524ad73f
uncommit: don't allow bare uncommit on dirty working directory As per IRC discussion and suggestion by Augie, we should not allow bare `hg uncommit` on dirty working directory. Differential Revision: https://phab.mercurial-scm.org/D734
hgext/uncommit.py
tests/test-uncommit.t
--- a/hgext/uncommit.py	Sat Sep 16 02:34:13 2017 +0530
+++ b/hgext/uncommit.py	Wed Sep 20 02:18:01 2017 +0530
@@ -22,6 +22,7 @@
 from mercurial.i18n import _
 
 from mercurial import (
+    cmdutil,
     commands,
     context,
     copies,
@@ -148,6 +149,8 @@
     with repo.wlock(), repo.lock():
         wctx = repo[None]
 
+        if not pats:
+            cmdutil.bailifchanged(repo)
         if wctx.parents()[0].node() == node.nullid:
             raise error.Abort(_("cannot uncommit null changeset"))
         if len(wctx.parents()) > 1:
--- a/tests/test-uncommit.t	Sat Sep 16 02:34:13 2017 +0530
+++ b/tests/test-uncommit.t	Wed Sep 20 02:18:01 2017 +0530
@@ -149,6 +149,9 @@
   foo
   $ hg status
   M files
+  $ hg uncommit
+  abort: uncommitted changes
+  [255]
   $ hg uncommit files
   $ cat files
   abcde
@@ -337,7 +340,7 @@
   (branch merge, don't forget to commit)
 
   $ hg uncommit
-  abort: cannot uncommit while merging
+  abort: outstanding uncommitted merge
   [255]
 
   $ hg status