Skip to content
Snippets Groups Projects
Commit bcb4b5c5 authored by Martin von Zweigbergk's avatar Martin von Zweigbergk
Browse files

copies: move short-circuiting of dirstate copies out of _forwardcopies()

I'd like to move the filtering of copies we do after chaining to the
end of all chaining (in a single place in pathcopies()). One problem
that came up when trying that was that we allow things like `hg cp -f
<file> <existing file>` so the user can later amend that in. Filtering
at the end would mean that we remove those copies. That would break
`hg st -C`. This patch therefore moves the short-circuiting of
dirstate copies into pathcopies() so we can more easily handle the
dirstate-only case differently.

I initially thought this might change some behavior when the user does
`hg status --rev 'wdir()' --rev .` during an uncommitted merge, since
_backwardrenames() would reverse the copies in that case. However, I
couldn't come up with a test case where it made a difference.

Differential Revision: https://phab.mercurial-scm.org/D6600
parent ab416b5d
Branches
Tags
No related merge requests found
......@@ -324,10 +324,6 @@
match = a.repo().narrowmatch(match)
# check for working copy
if b.rev() is None:
if a == b.p1():
# short-circuit to avoid issues with merge states
return _dirstatecopies(b._repo, match)
cm = _committedforwardcopies(a, b.p1(), match)
# combine copies from dirstate if necessary
return _chainandfilter(a, b, cm, _dirstatecopies(b._repo, match))
......@@ -367,6 +363,9 @@
if a == x:
if debug:
repo.ui.debug('debug.copies: search mode: forward\n')
if y.rev() is None and x == y.p1():
# short-circuit to avoid issues with merge states
return _dirstatecopies(repo, match)
return _forwardcopies(x, y, match=match)
if a == y:
if debug:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment