Skip to content

Commit 16bee9f

Browse files
committed
Add a seperate svn retry function to clean up a failed checkout
1 parent a871593 commit 16bee9f

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

release.sh

+22-3
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,25 @@ retry() {
106106
return $result
107107
}
108108

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+
109128
# Escape a string for use in sed substitutions.
110129
escape_substr() {
111130
local s="$1"
@@ -2028,7 +2047,7 @@ checkout_external() {
20282047

20292048
if [ -z "$_external_tag" ]; then
20302049
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
20322051
else
20332052
_cqe_svn_tag_url="${_cqe_svn_trunk_url%/trunk}/tags"
20342053
if [ "$_external_tag" = "latest" ]; then
@@ -2040,14 +2059,14 @@ checkout_external() {
20402059
if [ "$_external_tag" = "latest" ]; then
20412060
echo "No tags found in $_cqe_svn_tag_url"
20422061
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
20442063
else
20452064
_cqe_external_uri="${_cqe_svn_tag_url}/$_external_tag"
20462065
if [ -n "$_cqe_svn_subdir" ]; then
20472066
_cqe_external_uri="${_cqe_external_uri}/$_cqe_svn_subdir"
20482067
fi
20492068
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
20512070
fi
20522071
fi
20532072
set_info_svn "$_cqe_checkout_dir" || return 1

0 commit comments

Comments
 (0)