tests/test-convert-bzr
author Brodie Rao <me+hg@dackz.net>
Tue, 30 Jun 2009 17:58:17 -0400
changeset 8982 9c0cecb71350
parent 8470 dd24488cba2d
permissions -rwxr-xr-x
zsh completion: disable defaults and verbose output when completing If ui.verbose is set to True in hgrc, commands used to provide completions would yield bad results. For example, qpush completion would include the patch numbers and statuses as returned by qunapplied -v, instead of just the patch names. Defaults are also disabled when completing to prevent similar issues when an option is set that changes a command's output.

#!/bin/sh

. "$TESTDIR/bzr-definitions"

echo % create and rename on the same file in the same step
mkdir test-createandrename
cd test-createandrename
bzr init -q source
cd source
echo a > a
echo c > c
echo e > e
bzr add -q a c e
bzr commit -q -m 'Initial add: a, c, e'
bzr mv a b
bzr mv c d
bzr mv e f
echo a2 >> a
mkdir e
bzr add -q a e
bzr commit -q -m 'rename a into b, create a, rename c into d'
cd ..
hg convert source source-hg
glog -R source-hg
echo "% manifest"
hg manifest -R source-hg -r tip
echo "% test --rev option"
hg convert -r 1 source source-1-hg
glog -R source-1-hg
echo "% test with filemap"
cat > filemap <<EOF
exclude a
EOF
hg convert --filemap filemap source source-filemap-hg
hg -R source-filemap-hg manifest -r tip

echo '% convert from lightweight checkout'
bzr checkout --lightweight source source-light
hg convert source-light source-light-hg
echo "% lightweight manifest"
hg manifest -R source-light-hg -r tip

# extract timestamps that look just like hg's {date|isodate}:
# yyyy-mm-dd HH:MM zzzz (no seconds!)
echo "% compare timestamps"
cd source
bzr log | \
  sed '/timestamp/!d;s/.\{15\}\([0-9: -]\{16\}\):.. \(.[0-9]\{4\}\)/\1 \2/' \
  > ../bzr-timestamps
cd ..

hg -R source-hg log --template "{date|isodate}\n" > hg-timestamps
if diff -q bzr-timestamps hg-timestamps ; then
  echo "good: hg timestamps match bzr timestamps"
else
  echo "fail: bzr timestamps are:"
  cat bzr-timestamps
  echo "but hg timestamps are:"
  cat hg-timestamps
fi

cd ..

echo % merge
mkdir test-merge
cd test-merge

cat > helper.py <<EOF
import sys
from bzrlib import workingtree
wt = workingtree.WorkingTree.open('.')

message, stamp = sys.argv[1:]
wt.commit(message, timestamp=int(stamp))
EOF

bzr init -q source
cd source
echo content > a
echo content2 > b
bzr add -q a b
bzr commit -q -m 'Initial add'
cd ..
bzr branch -q source source-improve
cd source
echo more >> a
python ../helper.py 'Editing a' 100
cd ../source-improve
echo content3 >> b
python ../helper.py 'Editing b' 200
cd ../source
bzr merge -q ../source-improve
bzr commit -q -m 'Merged improve branch'
cd ..
hg convert --datesort source source-hg
glog -R source-hg
cd ..

echo % symlinks and executable files
mkdir test-symlinks
cd test-symlinks
bzr init -q source
cd source
touch program
chmod +x program
ln -s program altname
mkdir d
echo a > d/a
ln -s a syma
bzr add -q altname program syma d/a
bzr commit -q -m 'Initial setup'
touch newprog
chmod +x newprog
rm altname
ln -s newprog altname
chmod -x program
bzr add -q newprog
bzr commit -q -m 'Symlink changed, x bits changed'
cd ..
hg convert source source-hg
manifest source-hg 0
manifest source-hg tip
cd source-hg
echo % test the symlinks can be recreated
hg up
hg cat syma
cd ../..