D6877: merge: replace magic strings with NAMED_CONSTANTS (API)
durin42 (Augie Fackler)
phabricator at mercurial-scm.org
Wed Sep 25 15:10:48 UTC 2019
durin42 created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
.. api::
`mercurial.hg.update*` and `mercurial.merge.update` now expect a value
from a set of NAMED_CONSTANTS (`merge.UPDATECHECK_*` constants)
rather than a collection of magic strings. As of now, the values
are the same, but code should be prepared for these values to
change in the future.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D6877
AFFECTED FILES
mercurial/hg.py
mercurial/merge.py
CHANGE DETAILS
diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -1926,6 +1926,11 @@
else:
repo.dirstate.normal(f)
+UPDATECHECK_ABORT = 'abort' # handled at higher layers
+UPDATECHECK_NONE = 'none'
+UPDATECHECK_LINEAR = 'linear'
+UPDATECHECK_NO_CONFLICT = 'noconflict'
+
def update(repo, node, branchmerge, force, ancestor=None,
mergeancestor=False, labels=None, matcher=None, mergeforce=False,
updatecheck=None, wc=None):
@@ -1992,8 +1997,11 @@
# and force=False pass a value for updatecheck. We may want to allow
# updatecheck='abort' to better suppport some of these callers.
if updatecheck is None:
- updatecheck = 'linear'
- assert updatecheck in ('none', 'linear', 'noconflict')
+ updatecheck = UPDATECHECK_LINEAR
+ assert updatecheck in (UPDATECHECK_NONE,
+ UPDATECHECK_LINEAR,
+ UPDATECHECK_NO_CONFLICT,
+ )
# If we're doing a partial update, we need to skip updating
# the dirstate, so make a note of any partial-ness to the
# update here.
@@ -2050,7 +2058,7 @@
repo.hook('update', parent1=xp2, parent2='', error=0)
return updateresult(0, 0, 0, 0)
- if (updatecheck == 'linear' and
+ if (updatecheck == UPDATECHECK_LINEAR and
pas not in ([p1], [p2])): # nonlinear
dirty = wc.dirty(missing=True)
if dirty:
@@ -2087,7 +2095,7 @@
repo, wc, p2, pas, branchmerge, force, mergeancestor,
followcopies, matcher=matcher, mergeforce=mergeforce)
- if updatecheck == 'noconflict':
+ if updatecheck == UPDATECHECK_NO_CONFLICT:
for f, (m, args, msg) in actionbyfile.iteritems():
if m not in (ACTION_GET, ACTION_KEEP, ACTION_EXEC,
ACTION_REMOVE, ACTION_PATH_CONFLICT_RESOLVE):
diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -897,21 +897,26 @@
:clean: whether changes in the working directory can be discarded
:updatecheck: how to deal with a dirty working directory
- Valid values for updatecheck are (None => linear):
+ Valid values for updatecheck are the UPDATECHECK_* constants
+ defined in the merge module. Passing `None` will result in using the
+ configured default.
- * abort: abort if the working directory is dirty
- * none: don't check (merge working directory changes into destination)
- * linear: check that update is linear before merging working directory
+ * ABORT: abort if the working directory is dirty
+ * NONE: don't check (merge working directory changes into destination)
+ * LINEAR: check that update is linear before merging working directory
changes into destination
- * noconflict: check that the update does not result in file merges
+ * NO_CONFLICT: check that the update does not result in file merges
This returns whether conflict is detected at updating or not.
"""
if updatecheck is None:
updatecheck = ui.config('commands', 'update.check')
- if updatecheck not in ('abort', 'none', 'linear', 'noconflict'):
+ if updatecheck not in (mergemod.UPDATECHECK_ABORT,
+ mergemod.UPDATECHECK_NONE,
+ mergemod.UPDATECHECK_LINEAR,
+ mergemod.UPDATECHECK_NO_CONFLICT):
# If not configured, or invalid value configured
- updatecheck = 'linear'
+ updatecheck = mergemod.UPDATECHECK_LINEAR
with repo.wlock():
movemarkfrom = None
warndest = False
@@ -923,9 +928,9 @@
if clean:
ret = _clean(repo, checkout)
else:
- if updatecheck == 'abort':
+ if updatecheck == mergemod.UPDATECHECK_ABORT:
cmdutil.bailifchanged(repo, merge=False)
- updatecheck = 'none'
+ updatecheck = mergemod.UPDATECHECK_NONE
ret = _update(repo, checkout, updatecheck=updatecheck)
if not ret and movemarkfrom:
To: durin42, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list