hgext/rebase.py
changeset 6923 ebf1462f2145
parent 6906 808f03f61ebe
child 6964 b3239badc711
equal deleted inserted replaced
6922:1ec2d227a521 6923:ebf1462f2145
    84                 rebasenode(repo, rev, target, state, skipped, targetancestors,
    84                 rebasenode(repo, rev, target, state, skipped, targetancestors,
    85                                                                 collapsef)
    85                                                                 collapsef)
    86         ui.note(_('rebase merging completed\n'))
    86         ui.note(_('rebase merging completed\n'))
    87 
    87 
    88         if collapsef:
    88         if collapsef:
    89             p1, p2 = defineparents(repo, min(state), target, 
    89             p1, p2 = defineparents(repo, min(state), target,
    90                                                         state, targetancestors)
    90                                                         state, targetancestors)
    91             concludenode(repo, rev, p1, external, state, collapsef,
    91             concludenode(repo, rev, p1, external, state, collapsef,
    92                                                 last=True, skipped=skipped)
    92                                                 last=True, skipped=skipped)
    93 
    93 
    94         if 'qtip' in repo.tags():
    94         if 'qtip' in repo.tags():
    95             updatemq(repo, state, skipped, **opts)
    95             updatemq(repo, state, skipped, **opts)
    96 
    96 
    97         if not opts.get('keep'):
    97         if not opts.get('keep'):
    98             # Remove no more useful revisions
    98             # Remove no more useful revisions
    99             if (util.set(repo.changelog.descendants(min(state))) 
    99             if (util.set(repo.changelog.descendants(min(state)))
   100                                                     - util.set(state.keys())):
   100                                                     - util.set(state.keys())):
   101                 ui.warn(_("warning: new changesets detected on source branch, "
   101                 ui.warn(_("warning: new changesets detected on source branch, "
   102                                                         "not stripping\n"))
   102                                                         "not stripping\n"))
   103             else:
   103             else:
   104                 repair.strip(repo.ui, repo, repo[min(state)].node(), "strip")
   104                 repair.strip(repo.ui, repo, repo[min(state)].node(), "strip")
   172         if not collapse:
   172         if not collapse:
   173             repo.ui.note('no changes, revision %d skipped\n' % rev)
   173             repo.ui.note('no changes, revision %d skipped\n' % rev)
   174             repo.ui.debug('next revision set to %s\n' % p1)
   174             repo.ui.debug('next revision set to %s\n' % p1)
   175             skipped[rev] = True
   175             skipped[rev] = True
   176         state[rev] = p1
   176         state[rev] = p1
   177        
   177 
   178 def defineparents(repo, rev, target, state, targetancestors):
   178 def defineparents(repo, rev, target, state, targetancestors):
   179     'Return the new parent relationship of the revision that will be rebased'
   179     'Return the new parent relationship of the revision that will be rebased'
   180     parents = repo[rev].parents()
   180     parents = repo[rev].parents()
   181     p1 = p2 = nullrev
   181     p1 = p2 = nullrev
   182 
   182 
   222         mq.reverse()
   222         mq.reverse()
   223         for rev in mq:
   223         for rev in mq:
   224             if rev not in skipped:
   224             if rev not in skipped:
   225                 repo.ui.debug('import mq patch %d (%s)\n' % (state[rev],
   225                 repo.ui.debug('import mq patch %d (%s)\n' % (state[rev],
   226                                                             mqrebase[rev]))
   226                                                             mqrebase[rev]))
   227                 repo.mq.qimport(repo, (), patchname=mqrebase[rev], 
   227                 repo.mq.qimport(repo, (), patchname=mqrebase[rev],
   228                             git=opts.get('git', False),rev=[str(state[rev])])
   228                             git=opts.get('git', False),rev=[str(state[rev])])
   229         repo.mq.save_dirty()
   229         repo.mq.save_dirty()
   230 
   230 
   231 def storestatus(repo, originalwd, target, state, collapse, external):
   231 def storestatus(repo, originalwd, target, state, collapse, external):
   232     'Store the current status to allow recovery'
   232     'Store the current status to allow recovery'
   328 
   328 
   329         cwdancestors = util.set(repo.changelog.ancestors(cwd))
   329         cwdancestors = util.set(repo.changelog.ancestors(cwd))
   330         cwdancestors.add(cwd)
   330         cwdancestors.add(cwd)
   331         rebasingbranch = cwdancestors - targetancestors
   331         rebasingbranch = cwdancestors - targetancestors
   332         source = min(rebasingbranch)
   332         source = min(rebasingbranch)
   333         
   333 
   334     repo.ui.debug(_('rebase onto %d starting from %d\n') % (dest, source))
   334     repo.ui.debug(_('rebase onto %d starting from %d\n') % (dest, source))
   335     state = dict.fromkeys(repo.changelog.descendants(source), nullrev)
   335     state = dict.fromkeys(repo.changelog.descendants(source), nullrev)
   336     external = nullrev
   336     external = nullrev
   337     if collapse:
   337     if collapse:
   338         if not targetancestors:
   338         if not targetancestors:
   377     decorator = lambda ui, repo, *args, **opts: \
   377     decorator = lambda ui, repo, *args, **opts: \
   378                     pulldelegate(cmdentry[0], repo, *args, **opts)
   378                     pulldelegate(cmdentry[0], repo, *args, **opts)
   379     # make sure 'hg help cmd' still works
   379     # make sure 'hg help cmd' still works
   380     decorator.__doc__ = cmdentry[0].__doc__
   380     decorator.__doc__ = cmdentry[0].__doc__
   381     decoratorentry = (decorator,) + cmdentry[1:]
   381     decoratorentry = (decorator,) + cmdentry[1:]
   382     rebaseopt = ('', 'rebase', None, 
   382     rebaseopt = ('', 'rebase', None,
   383                             _("rebase working directory to branch head"))
   383                             _("rebase working directory to branch head"))
   384     decoratorentry[1].append(rebaseopt)
   384     decoratorentry[1].append(rebaseopt)
   385     commands.table[cmdkey] = decoratorentry
   385     commands.table[cmdkey] = decoratorentry
   386 
   386 
   387 cmdtable = {
   387 cmdtable = {