Skip to content
Snippets Groups Projects
Commit 7fa39680 authored by Stefano Tortarolo's avatar Stefano Tortarolo
Browse files

rebase: --abort doesn't strip away the target changeset (issue2220)

When a changeset is skipped, rebase keeps the previous target as next
target and if the skipped cset is the first one, the recorded target is
actually the original target.
--abort did not detect this situation but simply stripped away the cset.
parent 666b62c5
No related branches found
No related tags found
No related merge requests found
......@@ -427,7 +427,7 @@
else:
# Strip from the first rebased revision
merge.update(repo, repo[originalwd].rev(), False, True, False)
rebased = filter(lambda x: x > -1, state.values())
rebased = filter(lambda x: x > -1 and x != target, state.values())
if rebased:
strippoint = min(rebased)
# no backup of rebased cset versions needed
......
......@@ -6,9 +6,11 @@
echo "graphlog=" >> $HGRCPATH
echo "rebase=" >> $HGRCPATH
hg init a
cd a
echo 'c1' >common
hg add common
hg commit -d '0 0' -m "C1"
createrepo() {
rm -rf repo
hg init repo
cd repo
echo 'c1' >common
hg add common
hg commit -d '0 0' -m "C1"
......@@ -14,4 +16,7 @@
echo 'c2' >>common
hg commit -d '1 0' -m "C2"
echo 'c2' >>common
hg commit -d '1 0' -m "C2"
echo 'c3' >>common
hg commit -d '2 0' -m "C3"
......@@ -17,4 +22,6 @@
echo 'c3' >>common
hg commit -d '2 0' -m "C3"
hg update -C 1
echo 'l1' >>extra
hg add extra
hg commit -d '3 0' -m "L1"
......@@ -20,6 +27,6 @@
hg update -C 1
echo 'l1' >>extra
hg add extra
hg commit -d '3 0' -m "L1"
sed -e 's/c2/l2/' common > common.new
mv common.new common
hg commit -d '4 0' -m "L2"
}
......@@ -25,9 +32,7 @@
sed -e 's/c2/l2/' common > common.new
mv common.new common
hg commit -d '4 0' -m "L2"
hg glog --template '{rev}: {desc}\n'
echo
createrepo > /dev/null 2>&1
hg --config extensions.hgext.graphlog= glog --template '{rev}: {desc}\n'
echo
echo '% Conflicting rebase'
......@@ -31,7 +36,7 @@
echo
echo '% Conflicting rebase'
hg rebase -s 3 -d 2 | cleanrebase
hg --config extensions.hgext.rebase= rebase -s 3 -d 2 | cleanrebase
echo
echo '% Abort'
......@@ -35,5 +40,7 @@
echo
echo '% Abort'
hg rebase --abort | cleanrebase
hg --config extensions.hgext.rebase= rebase --abort | cleanrebase
hg --config extensions.hgext.graphlog= glog --template '{rev}: {desc}\n'
......@@ -39,2 +46,31 @@
hg glog --template '{rev}: {desc}\n'
createrepo() {
rm -rf repo
hg init repo
cd repo
echo "a">a
hg ci -A -m'A'
echo "b">b
hg ci -A -m'B'
echo "c">c
hg ci -A -m'C'
hg up 0
echo "b">b
hg ci -A -m'B bis'
echo "c1">c
hg ci -A -m'C1'
}
echo
echo '% Rebase and abort without generating new changesets'
echo
createrepo > /dev/null 2>&1
hg --config extensions.hgext.graphlog= glog --template '{rev}:{desc|short}\n'
hg --config extensions.hgext.rebase= rebase -b 4 -d 2 | cleanrebase
hg --config extensions.hgext.graphlog= glog --template '{rev}:{desc|short}\n'
hg rebase -a | cleanrebase
hg glog --template '{rev}:{desc|short}\n'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
@ 4: L2
|
o 3: L1
......@@ -30,3 +29,41 @@
|
o 0: C1
% Rebase and abort without generating new changesets
@ 4:C1
|
o 3:B bis
|
| o 2:C
| |
| o 1:B
|/
o 0:A
warning: conflicts during merge.
merging c failed!
abort: fix unresolved conflicts with hg resolve then run hg rebase --continue
merging c
@ 4:C1
|
o 3:B bis
|
| @ 2:C
| |
| o 1:B
|/
o 0:A
rebase aborted
@ 4:C1
|
o 3:B bis
|
| o 2:C
| |
| o 1:B
|/
o 0:A
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment