git-commit-vandalism/t/t9109-git-svn-svk-mirrorpaths.sh
Eric Wong dadc6d2a09 git-svn: allow 'init' to act as multi-init
multi-init is now just an alias that requires -T/-t/-b;
all options that 'init' can now accept.

This will hopefully simplify usage and reduce typing.

Also, allow the --shared option in 'init' to take an optional
argument now that 'git-init --shared' supports an optional
argument.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2007-02-23 00:57:12 -08:00

107 lines
3.3 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright (c) 2006 Sam Vilian
#
test_description='git-svn on SVK mirror paths'
. ./lib-git-svn.sh
# ok, people who don't have SVK installed probably don't care about
# this test.
# we set up the repository manually, because even if SVK is installed
# it is difficult to use it in a way that is idempotent.
# we are not yet testing merge tickets..
uuid=b00bface-b1ff-c0ff-f0ff-b0bafe775e1e
url=https://really.slow.server.com/foobar
test_expect_success 'initialize repo' "
git config svn-remote.svn.useSvmProps true &&
echo '#!/bin/sh' > $rawsvnrepo/hooks/pre-revprop-change &&
echo 'exit 0' >> $rawsvnrepo/hooks/pre-revprop-change &&
chmod +x $rawsvnrepo/hooks/pre-revprop-change &&
mkdir import &&
cd import &&
mkdir local &&
echo hello > local/readme &&
svn import -m 'random local work' . $svnrepo &&
cd .. &&
svn co $svnrepo wc &&
cd wc &&
mkdir -p mirror/foobar &&
svn add mirror &&
svn ps svm:source $url mirror/foobar &&
svn ps svm:uuid $uuid mirror/foobar &&
svn ps svm:mirror / mirror/foobar &&
svn commit -m 'setup mirror/foobar as mirror of upstream' &&
svn ps -r 2 --revprop svm:headrev $uuid:0 $svnrepo &&
mkdir mirror/foobar/trunk
echo hello, world > mirror/foobar/trunk/readme &&
svn add mirror/foobar/trunk &&
svn commit -m 'first upstream revision' &&
svn ps -r 3 --revprop svm:headrev $uuid:1 $svnrepo &&
svn up &&
svn mkdir mirror/foobar/branches &&
svn cp mirror/foobar/trunk mirror/foobar/branches/silly &&
svn commit -m 'make branch for silliness' &&
svn ps -r 4 --revprop svm:headrev $uuid:2 $svnrepo &&
svn up &&
echo random untested feature >> mirror/foobar/trunk/readme &&
poke mirror/foobar/trunk/readme &&
svn commit -m 'add a c00l feature to trunk' &&
svn ps -r 5 --revprop svm:headrev $uuid:3 $svnrepo &&
svn up &&
echo bug fix >> mirror/foobar/branches/silly/readme &&
poke mirror/foobar/branches/silly/readme &&
svn commit -m 'fix a bug' &&
svn ps -r 6 --revprop svm:headrev $uuid:4 $svnrepo &&
svn mkdir mirror/foobar/tags &&
svn cp mirror/foobar/branches/silly mirror/foobar/tags/blah-1.0 &&
svn commit -m 'make a release' &&
svn ps -r 7 --revprop svm:headrev $uuid:5 $svnrepo &&
cd ..
"
test_expect_success 'init an SVK mirror path' "
git-svn init -T trunk -t tags -b branches $svnrepo/mirror/foobar
"
test_expect_success 'multi-fetch an SVK mirror path' "git-svn multi-fetch"
test_expect_success 'got tag history OK' "
test \`git-log --pretty=oneline remotes/tags/blah-1.0 | wc -l\` -eq 3
"
test_expect_success 're-wrote git-svn-id URL, revision and UUID' "
git cat-file commit refs/remotes/trunk | \
fgrep 'git-svn-id: $url/mirror/foobar/trunk@3 $uuid' &&
git cat-file commit refs/remotes/tags/blah-1.0 | \
fgrep 'git-svn-id: $url/mirror/foobar/tags/blah-1.0@5 $uuid'
git cat-file commit refs/remotes/silly | \
fgrep 'git-svn-id: $url/mirror/foobar/branches/silly@4 $uuid'
"
test_expect_success 're-wrote author e-mail domain UUID' "
test \`git log --pretty=fuller trunk | \
grep '<.*@.*>' | fgrep '@$uuid>' | wc -l\` -eq 4 &&
test \`git log --pretty=fuller remotes/silly | \
grep '<.*@.*>' | fgrep '@$uuid>' | wc -l\` -eq 6 &&
test \`git log --pretty=fuller remotes/tags/blah-1.0 | \
grep '<.*@.*>' | fgrep '@$uuid>' | wc -l\` -eq 6
"
test_debug 'gitk --all &'
test_done