408 yield f |
408 yield f |
409 |
409 |
410 def _resolve(self, preresolve, dfile, wctx, labels=None): |
410 def _resolve(self, preresolve, dfile, wctx, labels=None): |
411 """rerun merge process for file path `dfile`""" |
411 """rerun merge process for file path `dfile`""" |
412 if self[dfile] in 'rd': |
412 if self[dfile] in 'rd': |
413 return True, 0 |
413 return True, 0, None |
414 stateentry = self._state[dfile] |
414 stateentry = self._state[dfile] |
415 state, hash, lfile, afile, anode, ofile, onode, flags = stateentry |
415 state, hash, lfile, afile, anode, ofile, onode, flags = stateentry |
416 octx = self._repo[self._other] |
416 octx = self._repo[self._other] |
417 fcd = wctx[dfile] |
417 fcd = wctx[dfile] |
418 fco = octx[ofile] |
418 fco = octx[ofile] |
443 # no real conflict |
443 # no real conflict |
444 del self._state[dfile] |
444 del self._state[dfile] |
445 self._dirty = True |
445 self._dirty = True |
446 elif not r: |
446 elif not r: |
447 self.mark(dfile, 'r') |
447 self.mark(dfile, 'r') |
448 return complete, r |
448 |
|
449 action = None |
|
450 if complete: |
|
451 if deleted: |
|
452 if not fcd.isabsent(): |
|
453 # cd: remote picked (or otherwise deleted) |
|
454 action = 'r' |
|
455 # else: dc: local picked (no action necessary) |
|
456 else: |
|
457 if fcd.isabsent(): # dc: remote picked |
|
458 action = 'g' |
|
459 elif fco.isabsent(): # cd: local picked |
|
460 action = 'a' |
|
461 # else: regular merges (no action necessary) |
|
462 |
|
463 return complete, r, action |
449 |
464 |
450 def preresolve(self, dfile, wctx, labels=None): |
465 def preresolve(self, dfile, wctx, labels=None): |
451 """run premerge process for dfile |
466 """run premerge process for dfile |
452 |
467 |
453 Returns whether the merge is complete, and the exit code.""" |
468 Returns whether the merge is complete, and the exit code.""" |
454 return self._resolve(True, dfile, wctx, labels=labels) |
469 complete, r, action = self._resolve(True, dfile, wctx, labels=labels) |
|
470 return complete, r |
455 |
471 |
456 def resolve(self, dfile, wctx, labels=None): |
472 def resolve(self, dfile, wctx, labels=None): |
457 """run merge process (assuming premerge was run) for dfile |
473 """run merge process (assuming premerge was run) for dfile |
458 |
474 |
459 Returns the exit code of the merge.""" |
475 Returns the exit code of the merge.""" |
460 return self._resolve(False, dfile, wctx, labels=labels)[1] |
476 complete, r, action = self._resolve(False, dfile, wctx, labels=labels) |
|
477 return r |
461 |
478 |
462 def _checkunknownfile(repo, wctx, mctx, f, f2=None): |
479 def _checkunknownfile(repo, wctx, mctx, f, f2=None): |
463 if f2 is None: |
480 if f2 is None: |
464 f2 = f |
481 f2 = f |
465 return (os.path.isfile(repo.wjoin(f)) |
482 return (os.path.isfile(repo.wjoin(f)) |