dev: sync-pending-branches: cleaner output
Ximin Luo
2 years ago
1 | 1 | # Sync remote pending branches locally, and prune merged branches. |
2 | 2 | set -e |
3 | 3 | |
4 | git_hash() { | |
5 | git rev-parse -q --verify "$@" || true | |
6 | } | |
7 | ||
4 | 8 | git fetch origin --prune |
5 | 9 | PREVBRANCH="$(git rev-parse --abbrev-ref HEAD)" |
6 | 10 | git branch --merged | tr -d ' ' | grep ^pending- | xargs -trn1 git branch -d |
7 | git branch --list -r 'origin/pending-*' --format='%(refname:lstrip=3)' | xargs -trn1 git checkout | |
11 | git branch --list -r 'origin/pending-*' --format='%(refname:lstrip=3)' | while read b; do | |
12 | if [ -z "$(git_hash "$b")" ]; then | |
13 | git checkout "$b" | |
14 | fi | |
15 | done | |
8 | 16 | git checkout "$PREVBRANCH" |
17 | git branch --list 'pending-*' --format='%(refname:lstrip=2)' | while read b; do | |
18 | if [ "$(git_hash "$b")" != "$(git_hash "origin/$b")" ]; then | |
19 | echo >&2 "WARNING: Local $b ($(git_hash "$b")) differs from remote $b ($(git_hash "origin/$b"))" | |
20 | fi | |
21 | done |