#!/bin/sh
. $TESTDIR/helpers.sh
echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
echo "graphlog=" >> $HGRCPATH
restore() {
hg unbundle -q .hg/strip-backup/*
rm .hg/strip-backup/*
}
teststrip() {
hg up -C $1
echo % before update $1, strip $2
hg parents
hg --traceback strip $2 | hidebackup
echo % after update $1, strip $2
hg parents
restore
}
hg init test
cd test
echo foo > bar
hg ci -Ama
echo more >> bar
hg ci -Amb
echo blah >> bar
hg ci -Amc
hg up 1
echo blah >> bar
hg ci -Amd
echo final >> bar
hg ci -Ame
hg log
teststrip 4 4
teststrip 4 3
teststrip 1 4
teststrip 4 2
teststrip 4 1
teststrip null 4
hg log
hg up -C 2
hg merge 4
echo % before strip of merge parent
hg parents
hg strip 4 2>&1 | hidebackup
echo % after strip of merge parent
hg parents
restore
hg up
hg glog
echo % 2 is parent of 3, only one strip should happen
hg strip 2 3 | hidebackup
hg glog
restore
hg glog
echo % 2 different branches: 2 strips
hg strip 2 4 | hidebackup
hg glog
restore
echo % 2 different branches and a common ancestor: 1 strip
hg strip 1 2 4 | hidebackup
restore
# remove branchy history for qimport tests
hg strip 3 | hidebackup
#strip of applied mq should cleanup status file
hg up -C 3
echo fooagain >> bar
hg ci -mf
hg qimport -r tip:2
echo % applied patches before strip
hg qapplied
echo % stripping revision in queue
hg strip 3 | hidebackup
echo % applied patches after stripping rev in queue
hg qapplied
echo % stripping ancestor of queue
hg strip 1 | hidebackup
echo % applied patches after stripping ancestor of queue
hg qapplied