Mercurial > public > mercurial-scm > hg-stable
diff hgext/rebase.py @ 17613:aafc521668d8
rebase: properly handle --collapse when creating obsolescence marker
In collapse mode, that content of state is not suitable to compute obsolescence
markers. We explicitly pass the resulting revision instead and use it as the
successors for all elements of the rebased set.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Tue, 18 Sep 2012 23:42:27 +0200 |
parents | fc2a6114f0a0 |
children | d417986e5e05 |
line wrap: on
line diff
--- a/hgext/rebase.py Tue Sep 18 23:13:31 2012 +0200 +++ b/hgext/rebase.py Tue Sep 18 23:42:27 2012 +0200 @@ -310,7 +310,10 @@ nstate[repo[k].node()] = repo[v].node() if not keepf: - clearrebased(ui, repo, state) + collapsedas = None + if collapsef: + collapsedas = newrev + clearrebased(ui, repo, state, collapsedas) if currentbookmarks: updatebookmarks(repo, nstate, currentbookmarks, **opts) @@ -656,12 +659,17 @@ state.update(dict.fromkeys(detachset, nullmerge)) return repo['.'].rev(), dest.rev(), state -def clearrebased(ui, repo, state): - """dispose of rebased revision at the end of the rebase""" +def clearrebased(ui, repo, state, collapsedas=None): + """dispose of rebased revision at the end of the rebase + + If `collapsedas` is not None, the rebase was a collapse whose result if the + `collapsedas` node.""" if obsolete._enabled: markers = [] for rev, newrev in sorted(state.items()): if newrev >= 0: + if collapsedas is not None: + newrev = collapsedas markers.append((repo[rev], (repo[newrev],))) if markers: obsolete.createmarkers(repo, markers)