# HG changeset patch # User Yuya Nishihara # Date 1506087902 -32400 # Node ID d00910b286cdcfb171107cbfe8503ea6210d6df6 # Parent cd3f39716fd3ed7bbfe623c87787ed898f577cbc copytrace: use ctx.mutable() instead of adhoc constant of non-public phases diff -r cd3f39716fd3 -r d00910b286cd mercurial/copies.py --- a/mercurial/copies.py Sat Sep 30 10:09:29 2017 +0100 +++ b/mercurial/copies.py Fri Sep 22 22:45:02 2017 +0900 @@ -15,7 +15,6 @@ match as matchmod, node, pathutil, - phases, scmutil, util, ) @@ -368,9 +367,9 @@ 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 @@ 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()))