Patchwork D8921: merge: use collections.defaultdict() for mergeresult.commitinfo

login
register
mail settings
Submitter phabricator
Date Aug. 10, 2020, 11:18 a.m.
Message ID <differential-rev-PHID-DREV-33ir6mq32vbldnixuaqa-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/47020/
State Superseded
Headers show

Comments

phabricator - Aug. 10, 2020, 11:18 a.m.
pulkit created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  We will be storing info from mergeresult.commitinfo to mergestate._stateextras
  in upcoming patches, let's make them use same structure so that we don't have to
  make much efforts in transferring info from one to other.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D8921

AFFECTED FILES
  mercurial/merge.py

CHANGE DETAILS




To: pulkit, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -579,7 +579,7 @@ 
         self._filemapping = {}
         self._diverge = {}
         self._renamedelete = {}
-        self._commitinfo = {}
+        self._commitinfo = collections.defaultdict(dict)
         self._actionmapping = collections.defaultdict(dict)
 
     def updatevalues(self, diverge, renamedelete, commitinfo):
@@ -756,7 +756,7 @@ 
     # information from merge which is needed at commit time
     # for example choosing filelog of which parent to commit
     # TODO: use specific constants in future for this mapping
-    commitinfo = {}
+    commitinfo = collections.defaultdict(dict)
     if followcopies:
         branch_copies1, branch_copies2, diverge = copies.mergecopies(
             repo, wctx, p2, pa
@@ -844,7 +844,7 @@ 
                             b'remote is newer',
                         )
                         if branchmerge:
-                            commitinfo[f] = b'other'
+                            commitinfo[f][b'filenode'] = b'other'
                 elif nol and n2 == a:  # remote only changed 'x'
                     mresult.addfile(
                         f,
@@ -860,7 +860,7 @@ 
                         b'remote is newer',
                     )
                     if branchmerge:
-                        commitinfo[f] = b'other'
+                        commitinfo[f][b'filenode'] = b'other'
                 else:  # both changed something
                     mresult.addfile(
                         f,
@@ -1363,7 +1363,7 @@ 
     for f, op in pycompat.iteritems(mresult.commitinfo):
         # the other side of filenode was choosen while merging, store this in
         # mergestate so that it can be reused on commit
-        if op == b'other':
+        if op[b'filenode'] == b'other':
             ms.addmergedother(f)
 
     moves = []