copies: extract function for deciding whether to use changeset-centric algos
We'll eventually have a "experimental.copies.read-from=changeset-only"
option too and I don't want to spread the logic for determining if we
should use changeset-centric of filelog-centric algorithms.
Differential Revision: https://phab.mercurial-scm.org/D6163
--- a/mercurial/copies.py Fri Jan 18 13:13:48 2019 -0800
+++ b/mercurial/copies.py Wed Mar 20 11:42:02 2019 -0700
@@ -160,13 +160,18 @@
mb = b.manifest()
return mb.filesnotin(ma, match=match)
+def usechangesetcentricalgo(repo):
+ """Checks if we should use changeset-centric copy algorithms"""
+ return (repo.ui.config('experimental', 'copies.read-from') ==
+ 'compatibility')
+
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
repo = a._repo
- if repo.ui.config('experimental', 'copies.read-from') == 'compatibility':
+ if usechangesetcentricalgo(repo):
return _changesetforwardcopies(a, b, match)
debug = repo.ui.debugflag and repo.ui.configbool('devel', 'debug.copies')
--- a/mercurial/scmutil.py Fri Jan 18 13:13:48 2019 -0800
+++ b/mercurial/scmutil.py Wed Mar 20 11:42:02 2019 -0700
@@ -1205,7 +1205,7 @@
wctx.copy(old, new)
def getrenamedfn(repo, endrev=None):
- if repo.ui.config('experimental', 'copies.read-from') == 'compatibility':
+ if copiesmod.usechangesetcentricalgo(repo):
def getrenamed(fn, rev):
ctx = repo[rev]
p1copies = ctx.p1copies()