mercurial/merge.py
changeset 45276 cb6a72dc0511
parent 45275 8e8d513941b4
child 45277 c515c54f6530
equal deleted inserted replaced
45275:8e8d513941b4 45276:cb6a72dc0511
  1239         )
  1239         )
  1240     }
  1240     }
  1241 
  1241 
  1242 
  1242 
  1243 def applyupdates(
  1243 def applyupdates(
  1244     repo, actions, wctx, mctx, overwrite, wantfiledata, labels=None
  1244     repo,
       
  1245     actions,
       
  1246     wctx,
       
  1247     mctx,
       
  1248     overwrite,
       
  1249     wantfiledata,
       
  1250     labels=None,
       
  1251     commitinfo=None,
  1245 ):
  1252 ):
  1246     """apply the merge action list to the working directory
  1253     """apply the merge action list to the working directory
  1247 
  1254 
  1248     wctx is the working copy context
  1255     wctx is the working copy context
  1249     mctx is the context to be merged into the working copy
  1256     mctx is the context to be merged into the working copy
       
  1257     commitinfo is a mapping of information which needs to be stored somewhere
       
  1258                (probably mergestate) so that it can be used at commit time.
  1250 
  1259 
  1251     Return a tuple of (counts, filedata), where counts is a tuple
  1260     Return a tuple of (counts, filedata), where counts is a tuple
  1252     (updated, merged, removed, unresolved) that describes how many
  1261     (updated, merged, removed, unresolved) that describes how many
  1253     files were affected by the update, and filedata is as described in
  1262     files were affected by the update, and filedata is as described in
  1254     batchget.
  1263     batchget.
  1258 
  1267 
  1259     updated, merged, removed = 0, 0, 0
  1268     updated, merged, removed = 0, 0, 0
  1260     ms = mergestatemod.mergestate.clean(
  1269     ms = mergestatemod.mergestate.clean(
  1261         repo, wctx.p1().node(), mctx.node(), labels
  1270         repo, wctx.p1().node(), mctx.node(), labels
  1262     )
  1271     )
       
  1272 
       
  1273     if commitinfo is None:
       
  1274         commitinfo = {}
       
  1275 
       
  1276     for f, op in pycompat.iteritems(commitinfo):
       
  1277         # the other side of filenode was choosen while merging, store this in
       
  1278         # mergestate so that it can be reused on commit
       
  1279         if op == b'other':
       
  1280             ms.addmergedother(f)
  1263 
  1281 
  1264     # add ACTION_GET_OTHER_AND_STORE to mergestate
  1282     # add ACTION_GET_OTHER_AND_STORE to mergestate
  1265     for e in actions[mergestatemod.ACTION_GET_OTHER_AND_STORE]:
  1283     for e in actions[mergestatemod.ACTION_GET_OTHER_AND_STORE]:
  1266         ms.addmergedother(e[0])
  1284         ms.addmergedother(e[0])
  1267 
  1285 
  1933             repo, len(actions[mergestatemod.ACTION_GET]), p1.node()
  1951             repo, len(actions[mergestatemod.ACTION_GET]), p1.node()
  1934         )
  1952         )
  1935 
  1953 
  1936         wantfiledata = updatedirstate and not branchmerge
  1954         wantfiledata = updatedirstate and not branchmerge
  1937         stats, getfiledata = applyupdates(
  1955         stats, getfiledata = applyupdates(
  1938             repo, actions, wc, p2, overwrite, wantfiledata, labels=labels
  1956             repo,
       
  1957             actions,
       
  1958             wc,
       
  1959             p2,
       
  1960             overwrite,
       
  1961             wantfiledata,
       
  1962             labels=labels,
       
  1963             commitinfo=mresult.commitinfo,
  1939         )
  1964         )
  1940 
  1965 
  1941         if updatedirstate:
  1966         if updatedirstate:
  1942             with repo.dirstate.parentchange():
  1967             with repo.dirstate.parentchange():
  1943                 repo.setparents(fp1, fp2)
  1968                 repo.setparents(fp1, fp2)