hgext/rebase.py
changeset 17611 910123eac887
parent 17325 e4db509c08ec
child 17612 fc2a6114f0a0
equal deleted inserted replaced
17610:d0afa149e059 17611:910123eac887
   308             for k, v in state.iteritems():
   308             for k, v in state.iteritems():
   309                 if v != nullmerge:
   309                 if v != nullmerge:
   310                     nstate[repo[k].node()] = repo[v].node()
   310                     nstate[repo[k].node()] = repo[v].node()
   311 
   311 
   312         if not keepf:
   312         if not keepf:
   313             # Remove no more useful revisions
   313             clearrebased(ui, repo, state)
   314             rebased = [rev for rev in state if state[rev] != nullmerge]
       
   315             if rebased:
       
   316                 if set(repo.changelog.descendants([min(rebased)])) - set(state):
       
   317                     ui.warn(_("warning: new changesets detected "
       
   318                               "on source branch, not stripping\n"))
       
   319                 else:
       
   320                     # backup the old csets by default
       
   321                     repair.strip(ui, repo, repo[min(rebased)].node(), "all")
       
   322 
   314 
   323         if currentbookmarks:
   315         if currentbookmarks:
   324             updatebookmarks(repo, nstate, currentbookmarks, **opts)
   316             updatebookmarks(repo, nstate, currentbookmarks, **opts)
   325 
   317 
   326         clearstatus(repo)
   318         clearstatus(repo)
   661     if len(root.parents()) <= 1:
   653     if len(root.parents()) <= 1:
   662         # (strict) ancestors of <root> not ancestors of <dest>
   654         # (strict) ancestors of <root> not ancestors of <dest>
   663         detachset = repo.revs('::%d - ::%d - %d', root, commonbase, root)
   655         detachset = repo.revs('::%d - ::%d - %d', root, commonbase, root)
   664         state.update(dict.fromkeys(detachset, nullmerge))
   656         state.update(dict.fromkeys(detachset, nullmerge))
   665     return repo['.'].rev(), dest.rev(), state
   657     return repo['.'].rev(), dest.rev(), state
       
   658 
       
   659 def clearrebased(ui, repo, state):
       
   660     """dispose of rebased revision at the end of the rebase"""
       
   661     rebased = [rev for rev in state if state[rev] != nullmerge]
       
   662     if rebased:
       
   663         if set(repo.changelog.descendants([min(rebased)])) - set(state):
       
   664             ui.warn(_("warning: new changesets detected "
       
   665                       "on source branch, not stripping\n"))
       
   666         else:
       
   667             # backup the old csets by default
       
   668             repair.strip(ui, repo, repo[min(rebased)].node(), "all")
       
   669 
   666 
   670 
   667 def pullrebase(orig, ui, repo, *args, **opts):
   671 def pullrebase(orig, ui, repo, *args, **opts):
   668     'Call rebase after pull if the latter has been invoked with --rebase'
   672     'Call rebase after pull if the latter has been invoked with --rebase'
   669     if opts.get('rebase'):
   673     if opts.get('rebase'):
   670         if opts.get('update'):
   674         if opts.get('update'):