git.lirion.de

Of git, get, and gud

aboutsummaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/git-other-branches12
-rwxr-xr-xbin/git-update-all17
2 files changed, 29 insertions, 0 deletions
diff --git a/bin/git-other-branches b/bin/git-other-branches
new file mode 100755
index 0000000..034670e
--- /dev/null
+++ b/bin/git-other-branches
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+GITBIN='/usr/bin/git'
+AWKBIN='/usr/bin/awk'
+GREPBIN='/usr/bin/grep'
+
+# 1. Pull the current branch and also tags, and prune references vanished from remote
+# shellcheck disable=SC2016
+"$GITBIN" branch --remotes |\
+ "$AWKBIN" '{print $1}' | "$AWKBIN" -F/ '{print $2}' |\
+ "$GREPBIN" -v "^$(git rev-parse --abbrev-ref HEAD)\$" |\
+ "$GREPBIN" -v '^HEAD$'
diff --git a/bin/git-update-all b/bin/git-update-all
new file mode 100755
index 0000000..d3f6033
--- /dev/null
+++ b/bin/git-update-all
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+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}\$")