Mercurial > hg-stable
changeset 51194:b8f9911c8dca
add: don't attempt to add back removed files unless explicitly listed
This fixes the bug demonstrated by the previous patch.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Wed, 29 Nov 2023 08:32:24 -0800 |
parents | b0a6084f9cd6 |
children | 77b86226dde2 |
files | mercurial/cmdutil.py tests/test-symlinks.t |
diffstat | 2 files changed, 13 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Tue Nov 28 22:44:04 2023 -0800 +++ b/mercurial/cmdutil.py Wed Nov 29 08:32:24 2023 -0800 @@ -2381,8 +2381,19 @@ full=False, ) ): + entry = dirstate.get_entry(f) + # We don't want to even attmpt to add back files that have been removed + # It would lead to a misleading message saying we're adding the path, + # and can also lead to file/dir conflicts when attempting to add it. + removed = entry and entry.removed exact = match.exact(f) - if exact or not explicitonly and f not in wctx and repo.wvfs.lexists(f): + if ( + exact + or not explicitonly + and f not in wctx + and repo.wvfs.lexists(f) + and not removed + ): if cca: cca(f) names.append(f)
--- a/tests/test-symlinks.t Tue Nov 28 22:44:04 2023 -0800 +++ b/tests/test-symlinks.t Wed Nov 29 08:32:24 2023 -0800 @@ -210,14 +210,10 @@ $ hg add -I foo adding foo - adding foo/a (known-bad-output !) - abort: file 'foo' in dirstate clashes with 'foo/a' (known-bad-output !) - [255] $ hg status A bar/a - A foo (missing-correct-output !) + A foo R foo/a - ? foo (known-bad-output !) $ cd ..