Recently Written · git

sh

Small shell and Python scripts

git clone https://github.com/equwal/sh

Log | Files | Refs


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"