##// END OF EJS Templates
merge: remove files with extra actions from merge action list...
Siddharth Agarwal -
r29831:1316c7cc default
parent child Browse files
Show More
@@ -1286,8 +1286,29 b' def applyupdates(repo, actions, wctx, mc'
1286 1286 removed += msremoved
1287 1287
1288 1288 extraactions = ms.actions()
1289 for k, acts in extraactions.iteritems():
1290 actions[k].extend(acts)
1289 if extraactions:
1290 mfiles = set(a[0] for a in actions['m'])
1291 for k, acts in extraactions.iteritems():
1292 actions[k].extend(acts)
1293 # Remove these files from actions['m'] as well. This is important
1294 # because in recordupdates, files in actions['m'] are processed
1295 # after files in other actions, and the merge driver might add
1296 # files to those actions via extraactions above. This can lead to a
1297 # file being recorded twice, with poor results. This is especially
1298 # problematic for actions['r'] (currently only possible with the
1299 # merge driver in the initial merge process; interrupted merges
1300 # don't go through this flow).
1301 #
1302 # The real fix here is to have indexes by both file and action so
1303 # that when the action for a file is changed it is automatically
1304 # reflected in the other action lists. But that involves a more
1305 # complex data structure, so this will do for now.
1306 #
1307 # We don't need to do the same operation for 'dc' and 'cd' because
1308 # those lists aren't consulted again.
1309 mfiles.difference_update(a[0] for a in acts)
1310
1311 actions['m'] = [a for a in actions['m'] if a[0] in mfiles]
1291 1312
1292 1313 progress(_updating, None, total=numupdates, unit=_files)
1293 1314
General Comments 0
You need to be logged in to leave comments. Login now