Mercurial > public > mercurial-scm > hg
comparison mercurial/merge.py @ 42970:1ad3ebb39c61
merge: replace magic strings with NAMED_CONSTANTS (API)
.. 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.
Differential Revision: https://phab.mercurial-scm.org/D6877
author | Augie Fackler <augie@google.com> |
---|---|
date | Wed, 25 Sep 2019 10:53:10 -0400 |
parents | af2b5562fcaf |
children | 71bb9363818c |
comparison
equal
deleted
inserted
replaced
42969:76608f9f27f6 | 42970:1ad3ebb39c61 |
---|---|
1924 repo.dirstate.add(f) | 1924 repo.dirstate.add(f) |
1925 repo.dirstate.copy(f0, f) | 1925 repo.dirstate.copy(f0, f) |
1926 else: | 1926 else: |
1927 repo.dirstate.normal(f) | 1927 repo.dirstate.normal(f) |
1928 | 1928 |
1929 UPDATECHECK_ABORT = 'abort' # handled at higher layers | |
1930 UPDATECHECK_NONE = 'none' | |
1931 UPDATECHECK_LINEAR = 'linear' | |
1932 UPDATECHECK_NO_CONFLICT = 'noconflict' | |
1933 | |
1929 def update(repo, node, branchmerge, force, ancestor=None, | 1934 def update(repo, node, branchmerge, force, ancestor=None, |
1930 mergeancestor=False, labels=None, matcher=None, mergeforce=False, | 1935 mergeancestor=False, labels=None, matcher=None, mergeforce=False, |
1931 updatecheck=None, wc=None): | 1936 updatecheck=None, wc=None): |
1932 """ | 1937 """ |
1933 Perform a merge between the working directory and the given node | 1938 Perform a merge between the working directory and the given node |
1990 if not branchmerge and not force: | 1995 if not branchmerge and not force: |
1991 # TODO: remove the default once all callers that pass branchmerge=False | 1996 # TODO: remove the default once all callers that pass branchmerge=False |
1992 # and force=False pass a value for updatecheck. We may want to allow | 1997 # and force=False pass a value for updatecheck. We may want to allow |
1993 # updatecheck='abort' to better suppport some of these callers. | 1998 # updatecheck='abort' to better suppport some of these callers. |
1994 if updatecheck is None: | 1999 if updatecheck is None: |
1995 updatecheck = 'linear' | 2000 updatecheck = UPDATECHECK_LINEAR |
1996 assert updatecheck in ('none', 'linear', 'noconflict') | 2001 assert updatecheck in (UPDATECHECK_NONE, |
2002 UPDATECHECK_LINEAR, | |
2003 UPDATECHECK_NO_CONFLICT, | |
2004 ) | |
1997 # If we're doing a partial update, we need to skip updating | 2005 # If we're doing a partial update, we need to skip updating |
1998 # the dirstate, so make a note of any partial-ness to the | 2006 # the dirstate, so make a note of any partial-ness to the |
1999 # update here. | 2007 # update here. |
2000 if matcher is None or matcher.always(): | 2008 if matcher is None or matcher.always(): |
2001 partial = False | 2009 partial = False |
2048 # call the hooks and exit early | 2056 # call the hooks and exit early |
2049 repo.hook('preupdate', throw=True, parent1=xp2, parent2='') | 2057 repo.hook('preupdate', throw=True, parent1=xp2, parent2='') |
2050 repo.hook('update', parent1=xp2, parent2='', error=0) | 2058 repo.hook('update', parent1=xp2, parent2='', error=0) |
2051 return updateresult(0, 0, 0, 0) | 2059 return updateresult(0, 0, 0, 0) |
2052 | 2060 |
2053 if (updatecheck == 'linear' and | 2061 if (updatecheck == UPDATECHECK_LINEAR and |
2054 pas not in ([p1], [p2])): # nonlinear | 2062 pas not in ([p1], [p2])): # nonlinear |
2055 dirty = wc.dirty(missing=True) | 2063 dirty = wc.dirty(missing=True) |
2056 if dirty: | 2064 if dirty: |
2057 # Branching is a bit strange to ensure we do the minimal | 2065 # Branching is a bit strange to ensure we do the minimal |
2058 # amount of call to obsutil.foreground. | 2066 # amount of call to obsutil.foreground. |
2085 ### calculate phase | 2093 ### calculate phase |
2086 actionbyfile, diverge, renamedelete = calculateupdates( | 2094 actionbyfile, diverge, renamedelete = calculateupdates( |
2087 repo, wc, p2, pas, branchmerge, force, mergeancestor, | 2095 repo, wc, p2, pas, branchmerge, force, mergeancestor, |
2088 followcopies, matcher=matcher, mergeforce=mergeforce) | 2096 followcopies, matcher=matcher, mergeforce=mergeforce) |
2089 | 2097 |
2090 if updatecheck == 'noconflict': | 2098 if updatecheck == UPDATECHECK_NO_CONFLICT: |
2091 for f, (m, args, msg) in actionbyfile.iteritems(): | 2099 for f, (m, args, msg) in actionbyfile.iteritems(): |
2092 if m not in (ACTION_GET, ACTION_KEEP, ACTION_EXEC, | 2100 if m not in (ACTION_GET, ACTION_KEEP, ACTION_EXEC, |
2093 ACTION_REMOVE, ACTION_PATH_CONFLICT_RESOLVE): | 2101 ACTION_REMOVE, ACTION_PATH_CONFLICT_RESOLVE): |
2094 msg = _("conflicting changes") | 2102 msg = _("conflicting changes") |
2095 hint = _("commit or update --clean to discard changes") | 2103 hint = _("commit or update --clean to discard changes") |