merge: extract helper for creating empty "actions" dict
Replicating the set of actions in multiple places is bad.
Differential Revision: https://phab.mercurial-scm.org/D5472
--- a/hgext/narrow/narrowcommands.py Mon Dec 03 22:22:23 2018 -0800
+++ b/hgext/narrow/narrowcommands.py Fri Dec 21 09:48:30 2018 -0800
@@ -316,7 +316,7 @@
transactiongetter=tgetter)
repo.setnewnarrowpats()
- actions = {k: [] for k in 'a am f g cd dc r dm dg m e k p pr'.split()}
+ actions = merge.emptyactions()
addgaction = actions['g'].append
mf = repo['.'].manifest().matches(newmatch)
--- a/mercurial/merge.py Mon Dec 03 22:22:23 2018 -0800
+++ b/mercurial/merge.py Fri Dec 21 09:48:30 2018 -0800
@@ -1541,6 +1541,25 @@
return (not self.updatedcount and not self.mergedcount
and not self.removedcount and not self.unresolvedcount)
+def emptyactions():
+ """create an actions dict, to be populated and passed to applyupdates()"""
+ return dict((m, [])
+ for m in (
+ ACTION_ADD,
+ ACTION_ADD_MODIFIED,
+ ACTION_FORGET,
+ ACTION_GET,
+ ACTION_CHANGED_DELETED,
+ ACTION_DELETED_CHANGED,
+ ACTION_REMOVE,
+ ACTION_DIR_RENAME_MOVE_LOCAL,
+ ACTION_LOCAL_DIR_RENAME_GET,
+ ACTION_MERGE,
+ ACTION_EXEC,
+ ACTION_KEEP,
+ ACTION_PATH_CONFLICT,
+ ACTION_PATH_CONFLICT_RESOLVE))
+
def applyupdates(repo, actions, wctx, mctx, overwrite, labels=None):
"""apply the merge action list to the working directory
@@ -2090,22 +2109,7 @@
del actionbyfile[f]
# Convert to dictionary-of-lists format
- actions = dict((m, [])
- for m in (
- ACTION_ADD,
- ACTION_ADD_MODIFIED,
- ACTION_FORGET,
- ACTION_GET,
- ACTION_CHANGED_DELETED,
- ACTION_DELETED_CHANGED,
- ACTION_REMOVE,
- ACTION_DIR_RENAME_MOVE_LOCAL,
- ACTION_LOCAL_DIR_RENAME_GET,
- ACTION_MERGE,
- ACTION_EXEC,
- ACTION_KEEP,
- ACTION_PATH_CONFLICT,
- ACTION_PATH_CONFLICT_RESOLVE))
+ actions = emptyactions()
for f, (m, args, msg) in actionbyfile.iteritems():
if m not in actions:
actions[m] = []
--- a/mercurial/sparse.py Mon Dec 03 22:22:23 2018 -0800
+++ b/mercurial/sparse.py Fri Dec 21 09:48:30 2018 -0800
@@ -7,7 +7,6 @@
from __future__ import absolute_import
-import collections
import hashlib
import os
@@ -247,7 +246,7 @@
actions.append((file, None, message))
dropped.append(file)
- typeactions = collections.defaultdict(list)
+ typeactions = mergemod.emptyactions()
typeactions['r'] = actions
mergemod.applyupdates(repo, typeactions, repo[None], repo['.'], False)
@@ -380,7 +379,7 @@
fctx = repo[None][file]
actions.append((file, (fctx.flags(), False), message))
- typeactions = collections.defaultdict(list)
+ typeactions = mergemod.emptyactions()
typeactions['g'] = actions
mergemod.applyupdates(repo, typeactions, repo[None], repo['.'],
False)
@@ -483,11 +482,8 @@
dropped.append(file)
# Apply changes to disk
- typeactions = dict((m, [])
- for m in 'a f g am cd dc r dm dg m e k p pr'.split())
+ typeactions = mergemod.emptyactions()
for f, (m, args, msg) in actions.iteritems():
- if m not in typeactions:
- typeactions[m] = []
typeactions[m].append((f, args, msg))
mergemod.applyupdates(repo, typeactions, repo[None], repo['.'], False)