# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2017-09-19 20:48:01 # Node ID 624c53e4121d88838dbfdf9ba7cb03cedba6e913 # Parent f94442d4698402f27201527b0663c93253ef7831 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 diff --git a/hgext/uncommit.py b/hgext/uncommit.py --- a/hgext/uncommit.py +++ b/hgext/uncommit.py @@ -22,6 +22,7 @@ from __future__ import absolute_import from mercurial.i18n import _ from mercurial import ( + cmdutil, commands, context, copies, @@ -148,6 +149,8 @@ def uncommit(ui, repo, *pats, **opts): 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: diff --git a/tests/test-uncommit.t b/tests/test-uncommit.t --- a/tests/test-uncommit.t +++ b/tests/test-uncommit.t @@ -149,6 +149,9 @@ Uncommit with dirty state foo $ hg status M files + $ hg uncommit + abort: uncommitted changes + [255] $ hg uncommit files $ cat files abcde @@ -337,7 +340,7 @@ Add and expect uncommit to fail on both (branch merge, don't forget to commit) $ hg uncommit - abort: cannot uncommit while merging + abort: outstanding uncommitted merge [255] $ hg status