Message8847

Author friedrich
Recipients
Date 2009-03-17.08:46:40
Content
The rebase command should do firstly all the merges and _then_ all the reverts.
The following rebase session fails (with unnecessary merge conflicts) when the
rebasing changesets modifies the same lines:

#!/bin/sh

makerepo() {
rm -rf testrepo
hg init testrepo
cd testrepo

echo "A" > a
echo "" >> a
hg commit -Am 'A' -u test -d '0 0'

sed -i -e 's/A/B/' a
hg commit -m 'B' -u test -d '1 0'

sed -i -e 's/B/C/' a
hg commit -Am 'C' -u test -d '2 0'

hg up 0
echo "D" >> a
hg commit -Am 'D' -u test -d '3 0'

hg glog --template '{rev}:{desc} {node|short}\n'
}

makerepo
echo
echo "This rebase fails"
hg rebase --debug -s 1 -d 3

hg rebase -a

makerepo
echo
echo "Manual rebase"
hg up 3
hg merge 1 --debug
hg ci -m 'Merge with B'
hg merge 2 --debug
hg ci -m 'Merge with C'

hg up 3
hg revert -ar 4
hg ci -m 'Rebased B'
hg revert -ar 5
hg ci -m 'Rebased C'
hg strip 4
echo
echo "The result from the manual rebase"
hg glog --template '{rev}:{desc} {node|short}\n'
echo
echo "The manual rebased file a:"
cat a
Files
File name Uploaded
rebase_merge.sh friedrich, 2009-03-17.08:46:40
History
Date User Action Args
2009-03-17 08:46:40friedrichlinkissue1561 messages
2009-03-17 08:46:40friedrichcreate