hgext3rd/evolve/evolvecmd.py
changeset 3809 f06ff8fee2f6
parent 3808 e6c0f45d51ed
child 3811 3273b178c202
equal deleted inserted replaced
3808:e6c0f45d51ed 3809:f06ff8fee2f6
   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)