X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=infra%2Fdgit-mirror-rsync;h=93464892e54137c496f56548ef450d6581c8cb94;hp=9afd39f1659c62de4114dd84dd9f6ae4a3fdcca7;hb=2c114c6b1f068b19deecc2a5602c3f15d56d6209;hpb=37bf4bc96cb4d67b9e22177e77c6d99283354e66 diff --git a/infra/dgit-mirror-rsync b/infra/dgit-mirror-rsync index 9afd39f1..93464892 100755 --- a/infra/dgit-mirror-rsync +++ b/infra/dgit-mirror-rsync @@ -26,7 +26,7 @@ set -o pipefail shopt -s nullglob case "$DGIT_DRS_DEBUG" in -''|0!1) ;; +''|0|1) ;; *) set -x ;; esac @@ -91,7 +91,7 @@ reinvoke () { check-package-mirrorable () { local repo=$repos/$package.git - local mode=$(stat -c%a "$repo") + local mode; mode=$(stat -c%a "$repo") case $mode in *5) return 0 ;; *0) return 1 ;; @@ -105,13 +105,17 @@ lock-and-process () { } attempt () { - exec >"$queue/$package.err" 2>&1 + exec 3>&2 >"$queue/$package.err" 2>&1 if actually; then - rm "$queue/$package.a" + rm -f "$queue/$package.a" + exec 2>&3 2>&1 mv -f "$queue/$package.err" "$queue/$package.log" + if ! [ -s "$queue/$package.log" ]; then + rm "$queue/$package.log" + fi rm "$queue/$package.lock" else - cat >&2 "$queue/$package.err" + cat >&3 "$queue/$package.err" exit 127 fi } @@ -146,13 +150,13 @@ reinvoke-locked) backlog) for f in $queue/*.[na]; do - lock-and-process-baseof-f + (lock-and-process-baseof-f ||:) done ;; all) for f in [a-z0-9]*.git; do - lock-and-process-baseof-f + (lock-and-process-baseof-f) done ;;