view tests/test-transplant @ 8657:3fa92c618624

posix: do not use fstat in isowner The fstat function was undefined, but never used since a stat object was always passed in the optional st argument. Passing st is now mandatory. This bug crept in when util was split up into posix and windows modules. The fstat function is still defined in util, but importing it into posix would create an import cycle which seems unnecessary.
author Martin Geisler <mg@lazybytes.net>
date Sat, 30 May 2009 23:42:35 +0200
parents 3f4f14eab085
children 8b35b08724eb
line wrap: on
line source

#!/bin/sh

cat <<EOF >> $HGRCPATH
[extensions]
transplant=
EOF

hg init t
cd t
echo r1 > r1
hg ci -Amr1 -d'0 0'
echo r2 > r2
hg ci -Amr2 -d'1 0'
hg up 0

echo b1 > b1
hg ci -Amb1 -d '0 0'
echo b2 > b2
hg ci -Amb2 -d '1 0'
echo b3 > b3
hg ci -Amb3 -d '2 0'

hg log --template '{rev} {parents} {desc}\n'

hg clone . ../rebase
cd ../rebase

hg up -C 1
echo '% rebase b onto r1'
hg transplant -a -b tip
hg log --template '{rev} {parents} {desc}\n'

hg clone ../t ../prune
cd ../prune

hg up -C 1
echo '% rebase b onto r1, skipping b2'
hg transplant -a -b tip -p 3
hg log --template '{rev} {parents} {desc}\n'

echo '% remote transplant'
hg clone -r 1 ../t ../remote
cd ../remote
hg transplant --log -s ../t 2 4
hg log --template '{rev} {parents} {desc}\n'

echo '% skip previous transplants'
hg transplant -s ../t -a -b 4
hg log --template '{rev} {parents} {desc}\n'

echo '% skip local changes transplanted to the source'
echo b4 > b4
hg ci -Amb4 -d '3 0'
hg clone ../t ../pullback
cd ../pullback
hg transplant -s ../remote -a -b tip

echo '% remote transplant with pull'
hg -R ../t serve -p $HGPORT -d --pid-file=../t.pid
cat ../t.pid >> $DAEMON_PIDS

hg clone -r 0 ../t ../rp
cd ../rp
hg transplant -s http://localhost:$HGPORT/ 2 4
hg log --template '{rev} {parents} {desc}\n'

echo '% transplant --continue'
hg init ../tc
cd ../tc
cat <<EOF > foo
foo
bar
baz
EOF
echo toremove > toremove
hg ci -Amfoo
cat <<EOF > foo
foo2
bar2
baz2
EOF
rm toremove
echo added > added
hg ci -Amfoo2
echo bar > bar
hg ci -Ambar
echo bar2 >> bar
hg ci -mbar2
hg up 0
echo foobar > foo
hg ci -mfoobar
hg transplant 1:3
# transplant -c shouldn't use an old changeset
hg up -C
rm added
hg transplant 1
hg transplant --continue
hg transplant 1:3
hg locate
cd ..

# Test transplant --merge (issue 1111)
echo % test transplant merge
hg init t1111
cd t1111
echo a > a
hg ci -Am adda
echo b >> a
hg ci -m appendb
echo c >> a
hg ci -m appendc
hg up -C 0
echo d >> a
hg ci -m appendd
echo % tranplant
hg transplant -m 1
cd ..

echo '% test transplant into empty repository'
hg init empty
cd empty
hg transplant -s ../t -b tip -a
cd ..

echo '% test filter'
hg init filter
cd filter
cat <<'EOF' >test-filter
#!/bin/sh
sed 's/r1/r2/' $1 > $1.new
mv $1.new $1
EOF
chmod +x test-filter
hg transplant -s ../t -b tip -a --filter ./test-filter |\
    sed 's/filtering.*/filtering/g'
hg log --template '{rev} {parents} {desc}\n'