D1697: copies: extract method for getting non-wdir forward copies
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Fri Dec 15 01:02:04 UTC 2017
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
I may add an alternative way of getting copy metadata (from changelog,
not filelog) but the chaining with the dirstate copy metadata will be
the same, so it will probably help to have this extracted. Even if
that doesn't happen, the next patch will show that we can simplify
this a bit after this refactoring, so it seems worth it regardless.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D1697
AFFECTED FILES
mercurial/copies.py
CHANGE DETAILS
diff --git a/mercurial/copies.py b/mercurial/copies.py
--- a/mercurial/copies.py
+++ b/mercurial/copies.py
@@ -156,18 +156,8 @@
mb = b.manifest()
return mb.filesnotin(ma, match=match)
-def _forwardcopies(a, b, match=None):
- """find {dst at b: src at a} copy mapping where a is an ancestor of b"""
-
- # check for working copy
- w = None
- if b.rev() is None:
- w = b
- b = w.p1()
- if a == b:
- # short-circuit to avoid issues with merge states
- return _dirstatecopies(w, match)
-
+def _committedforwardcopies(a, b, match):
+ """Like _forwardcopies(), but b.rev() cannot be None (working copy)"""
# files might have to be traced back to the fctx parent of the last
# one-side-only changeset, but not further back than that
limit = _findlimit(a._repo, a.rev(), b.rev())
@@ -199,6 +189,21 @@
ofctx = _tracefile(fctx, am, limit)
if ofctx:
cm[f] = ofctx.path()
+ return cm
+
+def _forwardcopies(a, b, match=None):
+ """find {dst at b: src at a} copy mapping where a is an ancestor of b"""
+
+ # check for working copy
+ w = None
+ if b.rev() is None:
+ w = b
+ b = w.p1()
+ if a == b:
+ # short-circuit to avoid issues with merge states
+ return _dirstatecopies(w, match)
+
+ cm = _committedforwardcopies(a, b, match)
# combine copies from dirstate if necessary
if w is not None:
To: martinvonz, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list