Recently Written · git

sh

Small shell and Python scripts

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

Log | Files | Refs


git-update-repos (937 bytes)

1 #!/bin/sh
2 # Update all git repos in directory tree
3 dir=${1:-"."}
4 results=$(mktemp)
5 trap 'rm -f "$results"' EXIT
6 echo "Updating repos in: $dir"
7 find "$dir" -name .git -type d -prune -print0 2>/dev/null |
8 	xargs -0 -P 8 -I{} "$(dirname "$0")/git-update-worker.sh" {} "$results"
9 conflicts=$(grep -c "^REBASE_CONFLICT:" "$results")
10 echo "CHANGES:"
11 sed -n 's/^UPDATED://p' "$results" | while IFS='|' read -r repo changelog; do
12 	repo_name=${repo#"$dir"/}
13 	printf '\033[32m%s:\033[0m\n' "$repo_name"
14 	printf '%s\n' "$changelog" | tr ';' '\n' | sed 's/^/  /' | sed 's/^  $//'
15 done
16 if [ "$conflicts" -gt 0 ]; then
17 	printf '\033[31mREBASE CONFLICTS:\033[0m\n'
18 	sed -n 's/^REBASE_CONFLICT://p' "$results" | while IFS='|' read -r repo _; do
19 		repo_name=${repo#"$dir"/}
20 		printf '\033[31m%s: requires manual resolution\033[0m\n' "$repo_name"
21 	done
22 	notify-send "Git Rebase Conflicts" "$conflicts repos need manual resolution" -u critical -t 10000
23 fi