From patchwork Thu Nov 27 01:12:16 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [3, of, 8] addremove: warn when addremove fails to operate on a named path From: Matt Harbison X-Patchwork-Id: 6873 Message-Id: <0cdf9472ba6aab34b5e9.1417050736@Envy> To: mercurial-devel@selenic.com Date: Wed, 26 Nov 2014 20:12:16 -0500 # HG changeset patch # User Matt Harbison # Date 1417030056 18000 # Wed Nov 26 14:27:36 2014 -0500 # Node ID 0cdf9472ba6aab34b5e95babc8283e3388dbb668 # Parent 0a826a7d6222c6170d7c1c9c8cbe3a735d4ad3b7 addremove: warn when addremove fails to operate on a named path It looks like a bad path is the only mode of failure for addremove. This warning is probably useful for the standalone command, but more important for 'commit -A'. That command doesn't currently abort if the addremove fails, but it will be made to do so prior to adding subrepo support, since not all subrepos will support addremove. We could just abort here, but it looks like addremove has always silently ignored bad paths, except for the exit code. diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -720,9 +720,15 @@ similarity = float(opts.get('similarity') or 0) rejected = [] - m.bad = lambda x, y: rejected.append(x) + origbad = m.bad + def badfn(f, msg): + if f in m.files(): + origbad(f, msg) + rejected.append(f) + m.bad = badfn added, unknown, deleted, removed, forgotten = _interestingfiles(repo, m) + m.bad = origbad unknownset = set(unknown + forgotten) toprint = unknownset.copy() diff --git a/tests/test-addremove.t b/tests/test-addremove.t --- a/tests/test-addremove.t +++ b/tests/test-addremove.t @@ -22,6 +22,16 @@ $ hg forget foo $ hg -v addremove adding foo + $ hg forget foo +#if windows + $ hg -v addremove nonexistant + nonexistant: The system cannot find the file specified + [1] +#else + $ hg -v addremove nonexistant + nonexistant: No such file or directory + [1] +#endif $ cd .. $ hg init sim