chiark / gitweb /
git fetching: git_lrfetch_sane: Support multiple calls
[dgit.git] / infra / dgit-mirror-rsync
index f2796f4b7faf10fd8a99373e7fda4eb854426154..93464892e54137c496f56548ef450d6581c8cb94 100755 (executable)
@@ -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       ;;
@@ -108,7 +108,11 @@ attempt () {
        exec 3>&2 >"$queue/$package.err" 2>&1
        if actually; then
                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 >&3 "$queue/$package.err"
@@ -146,7 +150,7 @@ reinvoke-locked)
 
 backlog)
        for f in $queue/*.[na]; do
-               (lock-and-process-baseof-f)
+               (lock-and-process-baseof-f ||:)
        done
        ;;