# HG changeset patch # User Matt Harbison # Date 2014-11-26 20:16:22 # Node ID 72c23fa4f52f04595f3958f7401b7ed290ad0b08 # Parent 83bbedc16b3f71e34fb67007c437a54baf4faeac commit: abort if --addremove is specified, but fails This will be required when subrepo support is added, in order to ensure consistent commits when a subrepo flavor doesn't support addremove. diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -2202,7 +2202,9 @@ def commit(ui, repo, commitfunc, pats, o # extract addremove carefully -- this function can be called from a command # that doesn't support addremove if opts.get('addremove'): - scmutil.addremove(repo, matcher, opts) + if scmutil.addremove(repo, matcher, opts) != 0: + raise util.Abort( + _("failed to mark all new/missing files as added/removed")) return commitfunc(ui, repo, message, matcher, opts) diff --git a/tests/test-addremove.t b/tests/test-addremove.t --- a/tests/test-addremove.t +++ b/tests/test-addremove.t @@ -79,4 +79,19 @@ $ hg addremove -s 50 adding b adding c + + $ rm c +#if windows + $ hg ci -A -m "c" nonexistant + nonexistant: The system cannot find the file specified + abort: failed to mark all new/missing files as added/removed + [255] +#else + $ hg ci -A -m "c" nonexistant + nonexistant: No such file or directory + abort: failed to mark all new/missing files as added/removed + [255] +#endif + $ hg st + ! c $ cd ..