diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -160,13 +160,18 @@ def _computeforwardmissing(a, b, match=N 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') diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -1205,7 +1205,7 @@ def _markchanges(repo, unknown, deleted, 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()