253 ) |
253 ) |
254 (flags,) = args |
254 (flags,) = args |
255 mresult.addfile(f, mergestatemod.ACTION_GET, (flags, backup), msg) |
255 mresult.addfile(f, mergestatemod.ACTION_GET, (flags, backup), msg) |
256 |
256 |
257 |
257 |
258 def _forgetremoved(wctx, mctx, branchmerge): |
258 def _forgetremoved(wctx, mctx, branchmerge, mresult): |
259 """ |
259 """ |
260 Forget removed files |
260 Forget removed files |
261 |
261 |
262 If we're jumping between revisions (as opposed to merging), and if |
262 If we're jumping between revisions (as opposed to merging), and if |
263 neither the working directory nor the target rev has the file, |
263 neither the working directory nor the target rev has the file, |
268 If we're merging, and the other revision has removed a file |
268 If we're merging, and the other revision has removed a file |
269 that is not present in the working directory, we need to mark it |
269 that is not present in the working directory, we need to mark it |
270 as removed. |
270 as removed. |
271 """ |
271 """ |
272 |
272 |
273 actions = {} |
|
274 m = mergestatemod.ACTION_FORGET |
273 m = mergestatemod.ACTION_FORGET |
275 if branchmerge: |
274 if branchmerge: |
276 m = mergestatemod.ACTION_REMOVE |
275 m = mergestatemod.ACTION_REMOVE |
277 for f in wctx.deleted(): |
276 for f in wctx.deleted(): |
278 if f not in mctx: |
277 if f not in mctx: |
279 actions[f] = m, None, b"forget deleted" |
278 mresult.addfile(f, m, None, b"forget deleted") |
280 |
279 |
281 if not branchmerge: |
280 if not branchmerge: |
282 for f in wctx.removed(): |
281 for f in wctx.removed(): |
283 if f not in mctx: |
282 if f not in mctx: |
284 actions[f] = ( |
283 mresult.addfile( |
285 mergestatemod.ACTION_FORGET, |
284 f, mergestatemod.ACTION_FORGET, None, b"forget removed", |
286 None, |
|
287 b"forget removed", |
|
288 ) |
285 ) |
289 |
|
290 return actions |
|
291 |
286 |
292 |
287 |
293 def _checkcollision(repo, wmf, mresult): |
288 def _checkcollision(repo, wmf, mresult): |
294 """ |
289 """ |
295 Check for case-folding collisions. |
290 Check for case-folding collisions. |
701 def setactions(self, actions): |
696 def setactions(self, actions): |
702 self._filemapping = actions |
697 self._filemapping = actions |
703 self._actionmapping = collections.defaultdict(dict) |
698 self._actionmapping = collections.defaultdict(dict) |
704 for f, (act, data, msg) in pycompat.iteritems(self._filemapping): |
699 for f, (act, data, msg) in pycompat.iteritems(self._filemapping): |
705 self._actionmapping[act][f] = data, msg |
700 self._actionmapping[act][f] = data, msg |
706 |
|
707 def updateactions(self, updates): |
|
708 for f, (a, data, msg) in pycompat.iteritems(updates): |
|
709 self.addfile(f, a, data, msg) |
|
710 |
701 |
711 def hasconflicts(self): |
702 def hasconflicts(self): |
712 """ tells whether this merge resulted in some actions which can |
703 """ tells whether this merge resulted in some actions which can |
713 result in conflicts or not """ |
704 result in conflicts or not """ |
714 for a in self._actionmapping.keys(): |
705 for a in self._actionmapping.keys(): |
1194 repo.ui.note(_(b'end of auction\n\n')) |
1185 repo.ui.note(_(b'end of auction\n\n')) |
1195 # TODO: think about commitinfo when bid merge is used |
1186 # TODO: think about commitinfo when bid merge is used |
1196 mresult.updatevalues(diverge, renamedelete, {}) |
1187 mresult.updatevalues(diverge, renamedelete, {}) |
1197 |
1188 |
1198 if wctx.rev() is None: |
1189 if wctx.rev() is None: |
1199 fractions = _forgetremoved(wctx, mctx, branchmerge) |
1190 _forgetremoved(wctx, mctx, branchmerge, mresult) |
1200 mresult.updateactions(fractions) |
|
1201 |
1191 |
1202 sparse.filterupdatesactions(repo, wctx, mctx, branchmerge, mresult) |
1192 sparse.filterupdatesactions(repo, wctx, mctx, branchmerge, mresult) |
1203 _resolvetrivial(repo, wctx, mctx, ancestors[0], mresult) |
1193 _resolvetrivial(repo, wctx, mctx, ancestors[0], mresult) |
1204 |
1194 |
1205 return mresult |
1195 return mresult |