From patchwork Wed Sep 27 12:33:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: copytrace: use ctx.mutable() instead of adhoc constant of non-public phases From: Yuya Nishihara X-Patchwork-Id: 24179 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Wed, 27 Sep 2017 21:33:48 +0900 # HG changeset patch # User Yuya Nishihara # Date 1506087902 -32400 # Fri Sep 22 22:45:02 2017 +0900 # Node ID bf17b694881c47015c02f006a788b469c399f3eb # Parent 1826d695ad58194cdc90876699ed44cbdf792fda copytrace: use ctx.mutable() instead of adhoc constant of non-public phases diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -15,7 +15,6 @@ from . import ( match as matchmod, node, pathutil, - phases, scmutil, util, ) @@ -368,9 +367,9 @@ def mergecopies(repo, c1, c2, base): if copytracing == 'off': return {}, {}, {}, {}, {} elif copytracing == 'heuristics': - # Do full copytracing if only drafts are involved as that will be fast - # enough and will also cover the copies which can be missed by - # heuristics + # Do full copytracing if only non-public revisions are involved as + # that will be fast enough and will also cover the copies which could + # be missed by heuristics if _isfullcopytraceable(repo, c1, base): return _fullcopytracing(repo, c1, c2, base) return _heuristicscopytracing(repo, c1, c2, base) @@ -378,16 +377,13 @@ def mergecopies(repo, c1, c2, base): return _fullcopytracing(repo, c1, c2, base) def _isfullcopytraceable(repo, c1, base): - """ Checks that if base, source and destination are all draft branches, if - yes let's use the full copytrace algorithm for increased capabilities since - it will be fast enough. + """ Checks that if base, source and destination are all no-public branches, + if yes let's use the full copytrace algorithm for increased capabilities + since it will be fast enough. """ if c1.rev() is None: c1 = c1.p1() - - nonpublicphases = set([phases.draft, phases.secret]) - - if (c1.phase() in nonpublicphases) and (base.phase() in nonpublicphases): + if c1.mutable() and base.mutable(): sourcecommitlimit = repo.ui.configint('experimental', 'copytrace.sourcecommitlimit') commits = len(repo.revs('%d::%d', base.rev(), c1.rev()))