mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
rebase: derive node from target rev (issue3802)
dest.rev() is the same as target when a new rebase is run, but dest isn't set when rebase --continue is run. Bug introduced in 97aaac321ced, which fixed issue3685.
This commit is contained in:
parent
864c1a6a4b
commit
afbf9327e6
@ -316,6 +316,9 @@ def rebase(ui, repo, **opts):
|
||||
for k, v in state.iteritems():
|
||||
if v > nullmerge:
|
||||
nstate[repo[k].node()] = repo[v].node()
|
||||
# XXX this is the same as dest.node() for the non-continue path --
|
||||
# this should probably be cleaned up
|
||||
targetnode = repo[target].node()
|
||||
|
||||
if not keepf:
|
||||
collapsedas = None
|
||||
@ -324,7 +327,7 @@ def rebase(ui, repo, **opts):
|
||||
clearrebased(ui, repo, state, skipped, collapsedas)
|
||||
|
||||
if currentbookmarks:
|
||||
updatebookmarks(repo, dest, nstate, currentbookmarks)
|
||||
updatebookmarks(repo, targetnode, nstate, currentbookmarks)
|
||||
|
||||
clearstatus(repo)
|
||||
ui.note(_("rebase completed\n"))
|
||||
@ -501,15 +504,14 @@ def updatemq(repo, state, skipped, **opts):
|
||||
mq.seriesdirty = True
|
||||
mq.savedirty()
|
||||
|
||||
def updatebookmarks(repo, dest, nstate, originalbookmarks):
|
||||
def updatebookmarks(repo, targetnode, nstate, originalbookmarks):
|
||||
'Move bookmarks to their correct changesets, and delete divergent ones'
|
||||
destnode = dest.node()
|
||||
marks = repo._bookmarks
|
||||
for k, v in originalbookmarks.iteritems():
|
||||
if v in nstate:
|
||||
# update the bookmarks for revs that have moved
|
||||
marks[k] = nstate[v]
|
||||
bookmarks.deletedivergent(repo, [destnode], k)
|
||||
bookmarks.deletedivergent(repo, [targetnode], k)
|
||||
|
||||
marks.write()
|
||||
|
||||
|
@ -127,5 +127,36 @@ Keep active bookmark on the correct changeset
|
||||
|
|
||||
o 0: 'A' bookmarks:
|
||||
|
||||
rebase --continue with bookmarks present (issue3802)
|
||||
|
||||
$ hg up 2
|
||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
||||
$ echo 'C' > c
|
||||
$ hg add c
|
||||
$ hg ci -m 'other C'
|
||||
created new head
|
||||
$ hg up 3
|
||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
||||
$ hg rebase
|
||||
merging c
|
||||
warning: conflicts during merge.
|
||||
merging c incomplete! (edit conflicts, then use 'hg resolve --mark')
|
||||
abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
|
||||
[255]
|
||||
$ echo 'c' > c
|
||||
$ hg resolve --mark c
|
||||
$ hg rebase --continue
|
||||
saved backup bundle to $TESTTMP/a3/.hg/strip-backup/3d5fa227f4b5-backup.hg (glob)
|
||||
$ hg tglog
|
||||
@ 4: 'C' bookmarks: Y Z
|
||||
|
|
||||
o 3: 'other C' bookmarks:
|
||||
|
|
||||
o 2: 'B' bookmarks: X
|
||||
|
|
||||
o 1: 'D' bookmarks: W
|
||||
|
|
||||
o 0: 'A' bookmarks:
|
||||
|
||||
|
||||
$ cd ..
|
||||
|
Loading…
Reference in New Issue
Block a user