341 commit. If bool is False, this is ''. |
341 commit. If bool is False, this is ''. |
342 """ |
342 """ |
343 repo = repo.unfiltered() |
343 repo = repo.unfiltered() |
344 divergent = repo[divergent.rev()] |
344 divergent = repo[divergent.rev()] |
345 evolvestate['divergent'] = divergent.node() |
345 evolvestate['divergent'] = divergent.node() |
|
346 # sometimes we will relocate a node in case of different parents and we can |
|
347 # encounter conflicts after relocation is done while solving |
|
348 # content-divergence and if the user calls `hg evolve --stop`, we need to |
|
349 # strip that relocated commit. However if `--all` is passed, we need to |
|
350 # reset this value for each content-divergence resolution which we are doing |
|
351 # below. |
|
352 evolvestate['relocated'] = None |
|
353 evolvestate['relocating'] = False |
346 base, others = divergentdata(divergent) |
354 base, others = divergentdata(divergent) |
347 |
355 |
348 # we don't handle split in content-divergence yet |
356 # we don't handle split in content-divergence yet |
349 if len(others) > 1: |
357 if len(others) > 1: |
350 othersstr = "[%s]" % (','.join([str(i) for i in others])) |
358 othersstr = "[%s]" % (','.join([str(i) for i in others])) |
441 % divergent)) |
449 % divergent)) |
442 return (False, '') |
450 return (False, '') |
443 |
451 |
444 # relocate the other divergent if required |
452 # relocate the other divergent if required |
445 if relocatereq: |
453 if relocatereq: |
|
454 evolvestate['current'] = other.node() |
|
455 # relocating will help us understand during the time of conflicts that |
|
456 # whether conflicts occur at reloacting or they occured at merging |
|
457 # content divergent changesets |
|
458 evolvestate['relocating'] = True |
446 ui.status(_('rebasing "other" content-divergent changeset %s on' |
459 ui.status(_('rebasing "other" content-divergent changeset %s on' |
447 ' %s\n' % (other, divergent.p1()))) |
460 ' %s\n' % (other, divergent.p1()))) |
448 newother = relocate(repo, other, divergent.p1(), evolvestate, |
461 newother = relocate(repo, other, divergent.p1(), evolvestate, |
449 keepbranch=True) |
462 keepbranch=True) |
450 other = repo[newother] |
463 other = repo[newother] |
|
464 evolvestate['relocating'] = False |
|
465 evolvestate['relocated'] = other.node() |
|
466 evolvestate['temprevs'].append(other.node()) |
|
467 evolvestate['other-divergent'] = other.node() |
451 |
468 |
452 _mergecontentdivergents(repo, progresscb, divergent, other, base, |
469 _mergecontentdivergents(repo, progresscb, divergent, other, base, |
453 evolvestate) |
470 evolvestate) |
454 return _completecontentdivergent(ui, repo, progresscb, divergent, other, |
471 return _completecontentdivergent(ui, repo, progresscb, divergent, other, |
455 base, evolvestate) |
472 base, evolvestate) |