git.lirion.de

Of git, get, and gud

aboutsummaryrefslogtreecommitdiffstats
path: root/bin/git-update-all
diff options
context:
space:
mode:
Diffstat (limited to 'bin/git-update-all')
-rwxr-xr-xbin/git-update-all23
1 files changed, 13 insertions, 10 deletions
diff --git a/bin/git-update-all b/bin/git-update-all
index d3f6033..0855339 100755
--- a/bin/git-update-all
+++ b/bin/git-update-all
@@ -5,13 +5,16 @@ GITBIN='/usr/bin/git'
# 1. Pull the current branch and also tags, and prune references vanished from remote
"$GITBIN" pull -tpf || exit 110
# 2. Pull all branches existing locally
-mybr="$("$GITBIN" branch --show-current)"
-while read -r branch
-do
- (
- printf '\033[1m\033[3mSwitching to %b.\033[0m\n' "$branch"
- "$GITBIN" switch "$branch" &&\
- "$GITBIN" pull &&\
- "$GITBIN" switch "$mybr"
- )
-done < <("$GITBIN" branch --list|awk '{print $NF}'|grep -vP "^${mybr}\$")
+if ! mybr="$("$GITBIN" symbolic-ref --short HEAD 2>/dev/null)"; then
+ printf 'Not on a branch, aborting.\n' >&2
+else
+ while read -r branch
+ do
+ (
+ printf '\033[1m\033[3mSwitching to %b.\033[0m\n' "$branch"
+ "$GITBIN" switch "$branch" &&\
+ "$GITBIN" pull &&\
+ "$GITBIN" switch "$mybr"
+ )
+ done < <("$GITBIN" for-each-ref --format='%(refname:short)' refs/heads/ | grep -vP "^${mybr}\$")
+fi