convert: better support for CVS branchpoints (
issue1447)
This records the branches starting at individual CVS file revisions,
using the symbolic names map rather than just the branches
information. This information is used to generate Mercurial
changesets. Despite the changes, the CVS conversion still suffers
heavily from cvsps' deficiencies in generating a correct
representation of the CVS repository history.
#!/bin/sh
echo "[extensions]" >> $HGRCPATH
echo "graphlog=" >> $HGRCPATH
echo "rebase=" >> $HGRCPATH
cleanoutput () {
sed -e 's/\(Rebase status stored to\).*/\1/' \
-e 's/\(Rebase status restored from\).*/\1/' \
-e 's/\(saving bundle to \).*/\1/'
}
hg init a
cd a
echo 'c1' >common
hg add common
hg commit -d '0 0' -m "C1"
echo 'c2' >>common
hg commit -d '1 0' -m "C2"
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"
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
echo '% Conflicting rebase'
hg rebase -s 3 -d 2 2>&1 | cleanoutput
echo
echo '% Abort'
hg rebase --abort 2>&1 | cleanoutput
hg glog --template '{rev}: {desc}\n'