summaryrefslogtreecommitdiff
path: root/t/t9109-git-svn-svk-mirrorpaths.sh
blob: 0e0ba3df39fd6a766b004cfc5b321ea7e7387151 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/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 &&
	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 &&
	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 'multi-init an SVK mirror path' "
	git-svn multi-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