@@ -106,6 +106,25 @@ retry() {
106
106
return $result
107
107
}
108
108
109
+ retry_svn_checkout () {
110
+ local repo=" $1 "
111
+ local path=" $2 "
112
+ local result=0
113
+ local count=1
114
+ local max=5
115
+ while [[ $count -le " $max " ]]; do
116
+ [[ $result -ne 0 ]] && {
117
+ echo -e " \033[01;31mRetrying (${count} /${max} )\033[0m" >&2
118
+ rm -rf " $path " # an aborted checkout can leave a .svn directory with a locked state
119
+ }
120
+ svn checkout -q " $repo " " $path " --force && { result=0 && break ; } || result=" $? "
121
+ count=" $(( count + 1 )) "
122
+ sleep 3
123
+ done
124
+ # shellcheck disable=SC2086
125
+ return $result
126
+ }
127
+
109
128
# Escape a string for use in sed substitutions.
110
129
escape_substr () {
111
130
local s=" $1 "
@@ -2028,7 +2047,7 @@ checkout_external() {
2028
2047
2029
2048
if [ -z " $_external_tag " ]; then
2030
2049
echo " Fetching latest version of external $_external_uri "
2031
- retry svn checkout -q " $_external_uri " " $_cqe_checkout_dir " --force || return 1
2050
+ retry_svn_checkout " $_external_uri " " $_cqe_checkout_dir " || return 1
2032
2051
else
2033
2052
_cqe_svn_tag_url=" ${_cqe_svn_trunk_url%/ trunk} /tags"
2034
2053
if [ " $_external_tag " = " latest" ]; then
@@ -2040,14 +2059,14 @@ checkout_external() {
2040
2059
if [ " $_external_tag " = " latest" ]; then
2041
2060
echo " No tags found in $_cqe_svn_tag_url "
2042
2061
echo " Fetching latest version of external $_external_uri "
2043
- retry svn checkout -q " $_external_uri " " $_cqe_checkout_dir " --force || return 1
2062
+ retry_svn_checkout " $_external_uri " " $_cqe_checkout_dir " || return 1
2044
2063
else
2045
2064
_cqe_external_uri=" ${_cqe_svn_tag_url} /$_external_tag "
2046
2065
if [ -n " $_cqe_svn_subdir " ]; then
2047
2066
_cqe_external_uri=" ${_cqe_external_uri} /$_cqe_svn_subdir "
2048
2067
fi
2049
2068
echo " Fetching tag \" $_external_tag \" from external $_cqe_external_uri "
2050
- retry svn checkout -q " $_cqe_external_uri " " $_cqe_checkout_dir " --force || return 1
2069
+ retry_svn_checkout " $_cqe_external_uri " " $_cqe_checkout_dir " || return 1
2051
2070
fi
2052
2071
fi
2053
2072
set_info_svn " $_cqe_checkout_dir " || return 1
0 commit comments