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'): |