hgext/rebase.py
changeset 8454 6d4bf1c1a003
parent 8270 3477ad0b1f2c
child 8615 94ca38e63576
equal deleted inserted replaced
8453:d1ca637b0773 8454:6d4bf1c1a003
    49     If a rebase is interrupted to manually resolve a merge, it can be
    49     If a rebase is interrupted to manually resolve a merge, it can be
    50     continued with --continue/-c or aborted with --abort/-a.
    50     continued with --continue/-c or aborted with --abort/-a.
    51     """
    51     """
    52     originalwd = target = None
    52     originalwd = target = None
    53     external = nullrev
    53     external = nullrev
    54     state = skipped = {}
    54     state = {}
       
    55     skipped = set()
    55 
    56 
    56     lock = wlock = None
    57     lock = wlock = None
    57     try:
    58     try:
    58         lock = repo.lock()
    59         lock = repo.lock()
    59         wlock = repo.wlock()
    60         wlock = repo.wlock()
   141         if skipped:
   142         if skipped:
   142             ui.note(_("%d revisions have been skipped\n") % len(skipped))
   143             ui.note(_("%d revisions have been skipped\n") % len(skipped))
   143     finally:
   144     finally:
   144         release(lock, wlock)
   145         release(lock, wlock)
   145 
   146 
   146 def concludenode(repo, rev, p1, p2, state, collapse, last=False, skipped={},
   147 def concludenode(repo, rev, p1, p2, state, collapse, last=False, skipped=None,
   147                  extrafn=None):
   148                  extrafn=None):
   148     """Skip commit if collapsing has been required and rev is not the last
   149     """Skip commit if collapsing has been required and rev is not the last
   149     revision, commit otherwise
   150     revision, commit otherwise
   150     """
   151     """
   151     repo.ui.debug(_(" set parents\n"))
   152     repo.ui.debug(_(" set parents\n"))
   152     if collapse and not last:
   153     if collapse and not last:
   153         repo.dirstate.setparents(repo[p1].node())
   154         repo.dirstate.setparents(repo[p1].node())
   154         return None
   155         return None
   155 
   156 
   156     repo.dirstate.setparents(repo[p1].node(), repo[p2].node())
   157     repo.dirstate.setparents(repo[p1].node(), repo[p2].node())
       
   158 
       
   159     if skipped is None:
       
   160         skipped = set()
   157 
   161 
   158     # Commit, record the old nodeid
   162     # Commit, record the old nodeid
   159     m, a, r = repo.status()[:3]
   163     m, a, r = repo.status()[:3]
   160     newrev = nullrev
   164     newrev = nullrev
   161     try:
   165     try:
   232         state[rev] = repo[newrev].rev()
   236         state[rev] = repo[newrev].rev()
   233     else:
   237     else:
   234         if not collapse:
   238         if not collapse:
   235             repo.ui.note(_('no changes, revision %d skipped\n') % rev)
   239             repo.ui.note(_('no changes, revision %d skipped\n') % rev)
   236             repo.ui.debug(_('next revision set to %s\n') % p1)
   240             repo.ui.debug(_('next revision set to %s\n') % p1)
   237             skipped[rev] = True
   241             skipped.add(rev)
   238         state[rev] = p1
   242         state[rev] = p1
   239 
   243 
   240 def defineparents(repo, rev, target, state, targetancestors):
   244 def defineparents(repo, rev, target, state, targetancestors):
   241     'Return the new parent relationship of the revision that will be rebased'
   245     'Return the new parent relationship of the revision that will be rebased'
   242     parents = repo[rev].parents()
   246     parents = repo[rev].parents()