git-update-worker.sh (907 bytes)
1 #!/bin/sh 2 # Worker for git-update-repos: git-update-worker.sh REPO/.git RESULTS 3 repo=${1%/.git} 4 results="$2" 5 name=$(basename "$repo") 6 old=$(cd "$repo" && git rev-parse HEAD 2>/dev/null) 7 if [ -f "$repo/.git/FETCH_HEAD" ]; then 8 if [ "$(find "$repo/.git/FETCH_HEAD" -mmin -5 2>/dev/null)" ]; then 9 echo "[$name] skipped" 10 exit 11 fi 12 fi 13 (cd "$repo" && git remote update >/dev/null 2>&1) 14 if (cd "$repo" && git pull --rebase >/dev/null 2>&1); then 15 : 16 elif (cd "$repo" && git rebase --abort >/dev/null 2>&1); then 17 echo "REBASE_CONFLICT:$repo|" >> "$results" 18 echo "[$name] REBASE CONFLICT" 19 exit 20 else 21 echo "[$name] FAILED" 22 exit 23 fi 24 new=$(cd "$repo" && git rev-parse HEAD 2>/dev/null) 25 [ "$old" = "$new" ] && { echo "[$name] up to date"; exit; } 26 echo "[$name] UPDATED" 27 changelog=$(cd "$repo" && git log --oneline --no-merges -3 "$old..$new" 2>/dev/null | tr '\n' ';') 28 echo "UPDATED:$repo|$changelog" >> "$results"