1#!/bin/sh
2#
3# Copyright (c) 2007 Eric Wong
4#
5
6test_description='git svn init/clone tests'
7
8. ./lib-git-svn.sh
9
10# setup, run inside tmp so we don't have any conflicts with $svnrepo
11set -e
12rm -r .git
13mkdir tmp
14cd tmp
15
16test_expect_success 'setup svnrepo' '
17 mkdir project project/trunk project/branches project/tags &&
18 echo foo > project/trunk/foo &&
19 svn_cmd import -m "$test_description" project "$svnrepo"/project &&
20 rm -rf project
21 '
22
23test_expect_success 'basic clone' '
24 test ! -d trunk &&
25 git svn clone "$svnrepo"/project/trunk &&
26 test -d trunk/.git/svn &&
27 test -e trunk/foo &&
28 rm -rf trunk
29 '
30
31test_expect_success 'clone to target directory' '
32 test ! -d target &&
33 git svn clone "$svnrepo"/project/trunk target &&
34 test -d target/.git/svn &&
35 test -e target/foo &&
36 rm -rf target
37 '
38
39test_expect_success 'clone with --stdlayout' '
40 test ! -d project &&
41 git svn clone -s "$svnrepo"/project &&
42 test -d project/.git/svn &&
43 test -e project/foo &&
44 rm -rf project
45 '
46
47test_expect_success 'clone to target directory with --stdlayout' '
48 test ! -d target &&
49 git svn clone -s "$svnrepo"/project target &&
50 test -d target/.git/svn &&
51 test -e target/foo &&
52 rm -rf target
53 '
54
55test_expect_success 'init without -s/-T/-b/-t does not warn' '
56 test ! -d trunk &&
57 git svn init "$svnrepo"/project/trunk trunk 2>warning &&
58 ! grep -q prefix warning &&
59 rm -rf trunk &&
60 rm -f warning
61 '
62
63test_expect_success 'clone without -s/-T/-b/-t does not warn' '
64 test ! -d trunk &&
65 git svn clone "$svnrepo"/project/trunk 2>warning &&
66 ! grep -q prefix warning &&
67 rm -rf trunk &&
68 rm -f warning
69 '
70
71test_svn_configured_prefix () {
72 prefix=$1 &&
73 cat >expect <<EOF &&
74project/trunk:refs/remotes/${prefix}trunk
75project/branches/*:refs/remotes/${prefix}*
76project/tags/*:refs/remotes/${prefix}tags/*
77EOF
78 test ! -f actual &&
79 git --git-dir=project/.git config svn-remote.svn.fetch >>actual &&
80 git --git-dir=project/.git config svn-remote.svn.branches >>actual &&
81 git --git-dir=project/.git config svn-remote.svn.tags >>actual &&
82 test_cmp expect actual &&
83 rm -f expect actual
84}
85
86test_expect_success 'init with -s/-T/-b/-t assumes --prefix=origin/' '
87 test ! -d project &&
88 git svn init -s "$svnrepo"/project project 2>warning &&
89 ! grep -q prefix warning &&
90 test_svn_configured_prefix "origin/" &&
91 rm -rf project &&
92 rm -f warning
93 '
94
95test_expect_success 'clone with -s/-T/-b/-t assumes --prefix=origin/' '
96 test ! -d project &&
97 git svn clone -s "$svnrepo"/project 2>warning &&
98 ! grep -q prefix warning &&
99 test_svn_configured_prefix "origin/" &&
100 rm -rf project &&
101 rm -f warning
102 '
103
104test_expect_success 'init with -s/-T/-b/-t and --prefix "" still works' '
105 test ! -d project &&
106 git svn init -s "$svnrepo"/project project --prefix "" 2>warning &&
107 ! grep -q prefix warning &&
108 test_svn_configured_prefix "" &&
109 rm -rf project &&
110 rm -f warning
111 '
112
113test_expect_success 'clone with -s/-T/-b/-t and --prefix "" still works' '
114 test ! -d project &&
115 git svn clone -s "$svnrepo"/project --prefix "" 2>warning &&
116 ! grep -q prefix warning &&
117 test_svn_configured_prefix "" &&
118 rm -rf project &&
119 rm -f warning
120 '
121
122test_expect_success 'init with -T as a full url works' '
123 test ! -d project &&
124 git svn init -T "$svnrepo"/project/trunk project &&
125 rm -rf project
126 '
127
128test_done