Mercurial > public > mercurial-scm > hg-stable
diff hgext/rebase.py @ 7954:b969611064ae
rebase: don't lose rename/copy data (Issue1423)
author | Stefano Tortarolo <stefano.tortarolo@gmail.com> |
---|---|
date | Mon, 30 Mar 2009 18:26:32 +0200 |
parents | b214066b7e1d |
children | c3d4ff03ec72 |
line wrap: on
line diff
--- a/hgext/rebase.py Wed Apr 01 09:11:00 2009 -0700 +++ b/hgext/rebase.py Mon Mar 30 18:26:32 2009 +0200 @@ -14,7 +14,7 @@ ''' from mercurial import util, repair, merge, cmdutil, commands, error -from mercurial import extensions, ancestor +from mercurial import extensions, ancestor, copies from mercurial.commands import templateopts from mercurial.node import nullrev from mercurial.i18n import _ @@ -210,7 +210,18 @@ else: # we have an interrupted rebase repo.ui.debug(_('resuming interrupted rebase\n')) - + # Keep track of renamed files in the revision that is going to be rebased + # Here we simulate the copies and renames in the source changeset + cop, diver = copies.copies(repo, repo[rev], repo[target], repo[p2], True) + m1 = repo[rev].manifest() + m2 = repo[target].manifest() + for k, v in cop.iteritems(): + if k in m1: + if v in m1 or v in m2: + repo.dirstate.copy(v, k) + if v in m2 and v not in m1: + repo.dirstate.remove(v) + newrev = concludenode(repo, rev, p1, p2, state, collapse, extrafn=extrafn)