[Request] [+- ] D8886: mergeresult: introduce getfile() and use it where required
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Wed Aug 5 12:11:51 UTC 2020
pulkit created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
We want to hide the underlying dictionary from the users and provide API for
valid and sane use cases.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D8886
AFFECTED FILES
hgext/largefiles/overrides.py
mercurial/merge.py
CHANGE DETAILS
diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -454,7 +454,8 @@
# A file is in a directory which aliases a local file.
# We will need to rename the local file.
localconflicts.add(p)
- if p in mresult.actions and mresult.actions[p][0] in (
+ pd = mresult.getfile(p)
+ if pd and pd[0] in (
mergestatemod.ACTION_CREATED,
mergestatemod.ACTION_DELETED_CHANGED,
mergestatemod.ACTION_MERGE,
@@ -489,7 +490,7 @@
ctxname = bytes(mctx).rstrip(b'+')
for f, p in _filesindirs(repo, mf, remoteconflicts):
if f not in deletedfiles:
- m, args, msg = mresult.actions[p]
+ m, args, msg = mresult.getfile(p)
pnew = util.safename(
p, ctxname, wctx, set(mresult.actions.keys())
)
@@ -612,6 +613,14 @@
self._filemapping[filename] = (action, data, message)
self._actionmapping[action][filename] = (data, message)
+ def getfile(self, filename, default_return=None):
+ """ returns (action, args, msg) about this file
+
+ returns default_return if the file is not present """
+ if filename in self._filemapping:
+ return self._filemapping[filename]
+ return default_return
+
def removefile(self, filename):
""" removes a file from the mergeresult object as the file might
not merging anymore """
@@ -1960,9 +1969,10 @@
# Prompt and create actions. Most of this is in the resolve phase
# already, but we can't handle .hgsubstate in filemerge or
# subrepoutil.submerge yet so we have to keep prompting for it.
- if b'.hgsubstate' in mresult.actions:
+ vals = mresult.getfile(b'.hgsubstate')
+ if vals:
f = b'.hgsubstate'
- m, args, msg = mresult.actions[f]
+ m, args, msg = vals
prompts = filemerge.partextras(labels)
prompts[b'f'] = f
if m == mergestatemod.ACTION_CHANGED_DELETED:
diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
--- a/hgext/largefiles/overrides.py
+++ b/hgext/largefiles/overrides.py
@@ -571,8 +571,8 @@
for lfile in sorted(lfiles):
standin = lfutil.standin(lfile)
- (lm, largs, lmsg) = mresult.actions.get(lfile, (None, None, None))
- (sm, sargs, smsg) = mresult.actions.get(standin, (None, None, None))
+ (lm, largs, lmsg) = mresult.getfile(lfile, (None, None, None))
+ (sm, sargs, smsg) = mresult.getfile(standin, (None, None, None))
if sm in (b'g', b'dc') and lm != b'r':
if sm == b'dc':
f1, f2, fa, move, anc = sargs
To: pulkit, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20200805/7c0343be/attachment-0001.html>
More information about the Mercurial-patches
mailing list