summaryrefslogtreecommitdiffstats
path: root/archrelease.in
diff options
context:
space:
mode:
Diffstat (limited to 'archrelease.in')
-rw-r--r--archrelease.in15
1 files changed, 8 insertions, 7 deletions
diff --git a/archrelease.in b/archrelease.in
index 25379a7..491e68f 100644
--- a/archrelease.in
+++ b/archrelease.in
@@ -48,7 +48,8 @@ if [[ $(svn status -q) ]]; then
fi
pushd .. >/dev/null
-IFS=$'\n' read -r -d '' -a known_files < <(svn ls -r HEAD "$trunk")
+mapfile -t known_files < <(svn ls -r HEAD "$trunk")
+wait $! || die "failed to discover committed files"
for file in "${known_files[@]}"; do
if [[ ${file:(-1)} = '/' ]]; then
die "archrelease: subdirectories are not supported in package directories!"
@@ -65,12 +66,12 @@ for tag in "$@"; do
stat_busy "Copying %s to %s" "${trunk}" "${tag}"
if [[ -d repos/$tag ]]; then
- declare -a trash
- trash=()
- while read -r file; do
- trash+=("repos/$tag/$file")
- done < <(svn ls "repos/$tag")
- [[ ${#trash[@]} == 0 ]] || svn rm -q "${trash[@]/%/@}"
+ mapfile -t trash < <(svn ls "repos/$tag")
+ wait $! || die "failed to discover existing files"
+ if (( ${#trash[@]} )); then
+ trash=("${trash[@]/#/repos/$tag/}")
+ svn rm -q "${trash[@]/%/@}"
+ fi
else
mkdir -p "repos/$tag"
svn add --parents -q "repos/$tag"