@@ -8,78 +8,78 @@ toplevel_directory="$(git rev-parse --show-cdup)"
8
8
9
9
function call()
10
10
{
11
- cmd=" $@ "
12
- echo " $cmd "
13
- eval " $cmd "
14
- return " $? "
11
+ cmd=" $@ "
12
+ echo " $cmd "
13
+ eval " $cmd "
14
+ return " $? "
15
15
}
16
16
17
17
function do_clone()
18
18
{
19
- test -d .git_externals || return 1
20
- module=` echo $remote_url | sed ' s,\(.*\)\(/trunk\|/branch.*\|/tag.*\),\1,' `
21
- branch=` echo $remote_url | sed ' s,\(.*\)\(/trunk\|/branch.*\|/tag.*\),\2,' | sed ' s,^/,,' `
22
- if [[ $branch = $remote_url ]]; then
23
- branch=" "
24
- fi
25
- (
26
- cd .git_externals
27
- if [ -d " $local_directory " ]; then
28
- (
29
- cd " $local_directory "
30
- call git svn fetch --all
31
- )
32
- else
33
- tags=" tags"
34
- brch=" branches"
35
- branchpath=$( echo $branch | cut -f1 -d/)
36
- echo $tags | grep $branchpath > /dev/null 2>&1 && tags=$branchpath
37
- echo $brch | grep $branchpath > /dev/null 2>&1 && brch=$branchpath
38
-
39
- if [ " $module " = " $remote_url " ]; then
40
- # URL does not contains any trunk, branches or tags part, so we dont need
41
- # additional options for git-svn
42
- call git svn clone " $revision " " $module " " $local_directory "
43
- else
44
- call git svn clone " $revision " " $module " -T trunk -b $brch -t $tags " $local_directory "
45
- fi
46
-
47
- fi
48
- (
49
- branch=" $( echo ${branch} | sed ' s,/$,,' ) "
50
- if [ -n " $branch " ]; then
51
- cd " $local_directory "
52
- call git reset --hard $branch
53
- fi
54
- )
55
- )
19
+ test -d .git_externals || return 1
20
+ module=` echo $remote_url | sed ' s,\(.*\)\(/trunk\|/branch.*\|/tag.*\),\1,' `
21
+ branch=` echo $remote_url | sed ' s,\(.*\)\(/trunk\|/branch.*\|/tag.*\),\2,' | sed ' s,^/,,' `
22
+ if [[ $branch = $remote_url ]]; then
23
+ branch=" "
24
+ fi
25
+ (
26
+ cd .git_externals
27
+ if [ -d " $local_directory " ]; then
28
+ (
29
+ cd " $local_directory "
30
+ call git svn fetch --all
31
+ )
32
+ else
33
+ tags=" tags"
34
+ brch=" branches"
35
+ branchpath=$( echo $branch | cut -f1 -d/)
36
+ echo $tags | grep $branchpath > /dev/null 2>&1 && tags=$branchpath
37
+ echo $brch | grep $branchpath > /dev/null 2>&1 && brch=$branchpath
38
+
39
+ if [ " $module " = " $remote_url " ]; then
40
+ # URL does not contains any trunk, branches or tags part, so we dont need
41
+ # additional options for git-svn
42
+ call git svn clone " $revision " " $module " " $local_directory "
43
+ else
44
+ call git svn clone " $revision " " $module " -T trunk -b $brch -t $tags " $local_directory "
45
+ fi
46
+
47
+ fi
48
+ (
49
+ branch=" $( echo ${branch} | sed ' s,/$,,' ) "
50
+ if [ -n " $branch " ]; then
51
+ cd " $local_directory "
52
+ call git reset --hard $branch
53
+ fi
54
+ )
55
+ )
56
56
}
57
57
58
58
function do_link()
59
59
{
60
- dir=" $1 "
61
- base=" $( dirname $dir ) "
62
- (
63
- mkdir -p " $base "
64
- cd $base
65
- rel=$( git rev-parse --show-cdup)
66
- ln -sf ${rel} .git_externals/" $dir "
67
- )
60
+ dir=" $1 "
61
+ base=" $( dirname $dir ) "
62
+ (
63
+ mkdir -p " $base "
64
+ cd $base
65
+ rel=$( git rev-parse --show-cdup)
66
+ ln -sf ${rel} .git_externals/" $dir "
67
+ )
68
68
}
69
69
70
70
function do_excludes()
71
71
{
72
- dir=" $1 "
73
- git_excludes_path=.git/info/exclude
74
- if ! grep -q ' ^.git_externals$' " $git_excludes_path "
75
- then
76
- echo .git_externals >> " $git_excludes_path "
77
- fi
78
-
79
- if ! grep -q ' ^' " $dir " ' $' " $git_excludes_path "
80
- then
81
- echo " $dir " >> " $git_excludes_path "
82
- fi
72
+ dir=" $1 "
73
+ git_excludes_path=.git/info/exclude
74
+ if ! grep -q ' ^.git_externals$' " $git_excludes_path "
75
+ then
76
+ echo .git_externals >> " $git_excludes_path "
77
+ fi
78
+
79
+ if ! grep -q ' ^' " $dir " ' $' " $git_excludes_path "
80
+ then
81
+ echo " $dir " >> " $git_excludes_path "
82
+ fi
83
83
}
84
84
85
85
function is_excluded()
@@ -91,28 +91,33 @@ function is_excluded()
91
91
local result=1
92
92
fi
93
93
fi
94
- echo $result
94
+ echo $result
95
95
return
96
96
}
97
97
98
98
99
- git svn show-externals| grep -vE ' #|^$' | \
100
- sed ' s/\(-r\)[ ]*\([0-9]\{1,\}\)/\1\2/' | while read -a words
99
+ git svn show-externals | grep -vE ' #|^$' | \
100
+ sed ' s/\(-r\)[ ]*\([0-9]\{1,\}\)/\1\2/' | \
101
+ while read svn_externals
101
102
do
102
- [ -z " ${words[*]} " ] && continue
103
103
104
- local_directory=" $( echo ${words[0]} | sed ' s,^/,,' ) "
105
- revision=" "
106
- remote_url=" ${words[1]} "
104
+ number_fields=" $( echo ${svn_externals} | awk ' {print NF}' ) "
105
+ case $number_fields in
106
+ 2)
107
+ local_directory=" $( echo ${svn_externals} | awk ' {print $1}' | sed ' s,^/,,' ) "
108
+ revision=" "
109
+ remote_url=" $( echo ${svn_externals} | awk ' {print $2}' ) "
110
+ ;;
111
+ 3)
112
+ local_directory=" $( echo ${svn_externals} | awk ' {print $1}' | sed ' s,^/,,' ) "
113
+ revision=" " $( echo ${svn_externals} | awk ' {print $2}' )
114
+ remote_url=" $( echo ${svn_externals} | awk ' {print $3}' ) "
115
+ ;;
116
+ * ) continue ;;
117
+ esac
107
118
108
119
check_excluded=$( is_excluded $local_directory )
109
-
110
120
if [ $check_excluded -eq 0 ] ; then
111
- if [ -n " ${words[2]} " ]; then
112
- revision=" ${words[1]} "
113
- remote_url=" ${words[2]} "
114
- fi
115
-
116
121
if [ -n " $USE_SSH " ]; then
117
122
echo " Rewriting url to use SVN+SSH."
118
123
shopt -s extglob
133
138
do_excludes " $local_directory "
134
139
fi
135
140
136
- done
137
-
141
+ done
0 commit comments