hgext/rebase.py
changeset 15404 c1eb8398fe82
parent 15289 9cec4b24615b
child 15471 f520c9616db5
equal deleted inserted replaced
15403:e27561eb4a76 15404:c1eb8398fe82
   183                 dest = repo[branch]
   183                 dest = repo[branch]
   184             else:
   184             else:
   185                 dest = repo[destf]
   185                 dest = repo[destf]
   186 
   186 
   187             if revf:
   187             if revf:
   188                 revgen = repo.set('%lr', revf)
   188                 rebaseset = repo.revs('%lr', revf)
   189             elif srcf:
   189             elif srcf:
   190                 revgen = repo.set('(%r)::', srcf)
   190                 rebaseset = repo.revs('(%r)::', srcf)
   191             else:
   191             else:
   192                 base = basef or '.'
   192                 base = basef or '.'
   193                 revgen = repo.set('(children(ancestor(%r, %d)) and ::(%r))::',
   193                 rebaseset = repo.revs('(children(ancestor(%r, %d)) & ::%r)::',
   194                                   base, dest, base)
   194                     base, dest, base)
   195 
       
   196             rebaseset = [c.rev() for c in revgen]
       
   197 
   195 
   198             if not rebaseset:
   196             if not rebaseset:
   199                 repo.ui.debug('base is ancestor of destination')
   197                 repo.ui.debug('base is ancestor of destination')
   200                 result = None
   198                 result = None
   201             elif not keepf and list(repo.set('first(children(%ld) - %ld)',
   199             elif not keepf and list(repo.revs('first(children(%ld) - %ld)',
   202                                             rebaseset, rebaseset)):
   200                                               rebaseset, rebaseset)):
   203                 raise util.Abort(
   201                 raise util.Abort(
   204                     _("can't remove original changesets with"
   202                     _("can't remove original changesets with"
   205                       " unrebased descendants"),
   203                       " unrebased descendants"),
   206                     hint=_('use --keep to keep original changesets'))
   204                     hint=_('use --keep to keep original changesets'))
   207             else:
   205             else:
   580            repo.ui.debug('source is a child of destination')
   578            repo.ui.debug('source is a child of destination')
   581            return None
   579            return None
   582         # rebase on ancestor, force detach
   580         # rebase on ancestor, force detach
   583         detach = True
   581         detach = True
   584     if detach:
   582     if detach:
   585         detachset = [c.rev() for c in repo.set('::%d - ::%d - %d',
   583         detachset = repo.revs('::%d - ::%d - %d', root, commonbase, root)
   586                                                 root, commonbase, root)]
       
   587 
   584 
   588     repo.ui.debug('rebase onto %d starting from %d\n' % (dest, root))
   585     repo.ui.debug('rebase onto %d starting from %d\n' % (dest, root))
   589     state = dict.fromkeys(rebaseset, nullrev)
   586     state = dict.fromkeys(rebaseset, nullrev)
   590     state.update(dict.fromkeys(detachset, nullmerge))
   587     state.update(dict.fromkeys(detachset, nullmerge))
   591     return repo['.'].rev(), dest.rev(), state
   588     return repo['.'].rev(), dest.rev(), state