D4416: copies: improve logic of deciding copytracing on based of config options
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Thu Aug 30 09:34:18 EDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHGa41497b5117c: copies: improve logic of deciding copytracing on based of config options (authored by pulkit, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D4416?vs=10677&id=10678
REVISION DETAIL
https://phab.mercurial-scm.org/D4416
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
@@ -20,6 +20,9 @@
scmutil,
util,
)
+from .utils import (
+ stringutil,
+)
def _findlimit(repo, a, b):
"""
@@ -366,19 +369,22 @@
return repo.dirstate.copies(), {}, {}, {}, {}
copytracing = repo.ui.config('experimental', 'copytrace')
+ boolctrace = stringutil.parsebool(copytracing)
# Copy trace disabling is explicitly below the node == p1 logic above
# because the logic above is required for a simple copy to be kept across a
# rebase.
- if copytracing == 'off':
- return {}, {}, {}, {}, {}
- elif copytracing == 'heuristics':
+ if copytracing == '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)
+ elif boolctrace is False:
+ # stringutil.parsebool() returns None when it is unable to parse the
+ # value, so we should rely on making sure copytracing is on such cases
+ return {}, {}, {}, {}, {}
else:
return _fullcopytracing(repo, c1, c2, base)
@@ -870,8 +876,10 @@
copies between fromrev and rev.
"""
exclude = {}
+ ctraceconfig = repo.ui.config('experimental', 'copytrace')
+ bctrace = stringutil.parsebool(ctraceconfig)
if (skiprev is not None and
- repo.ui.config('experimental', 'copytrace') != 'off'):
+ (ctraceconfig == 'heuristics' or bctrace or bctrace is None)):
# copytrace='off' skips this line, but not the entire function because
# the line below is O(size of the repo) during a rebase, while the rest
# of the function is much faster (and is required for carrying copy
To: pulkit, #hg-reviewers
Cc: yuja, mercurial-devel
More information about the Mercurial-devel
mailing list