# HG changeset patch # User Matt Harbison # Date 1417030056 18000 # Node ID 83bbedc16b3f71e34fb67007c437a54baf4faeac # Parent 891aaa7c0c70b349f3a989d02781261353239aa5 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 -r 891aaa7c0c70 -r 83bbedc16b3f mercurial/scmutil.py --- a/mercurial/scmutil.py Sun Nov 09 19:57:02 2014 -0500 +++ b/mercurial/scmutil.py Wed Nov 26 14:27:36 2014 -0500 @@ -721,9 +721,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 -r 891aaa7c0c70 -r 83bbedc16b3f tests/test-addremove.t --- a/tests/test-addremove.t Sun Nov 09 19:57:02 2014 -0500 +++ b/tests/test-addremove.t Wed Nov 26 14:27:36 2014 -0500 @@ -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 subdir