add src scripts
diff --git a/src/s b/src/s
new file mode 100755
index 0000000..2933164
--- /dev/null
+++ b/src/s
@@ -0,0 +1,154 @@
+#!/usr/bin/env bash
+Git() {
+ echo "git $@"
+ git $@
+ if [ "$?" != "0" ]; then
+ echo "GIT RETURNED ERROR!"
+ exit 1
+ fi
+}
+
+Git_may_fail() {
+ git $@
+}
+
+Git_branch() {
+ echo "$(Git -C "$dir" status)" | grep 'On branch' | sed 's/On branch //'
+}
+
+
+gitk_start() {
+ if [ -n "$DISPLAY" ]; then
+ gitk --all &
+ gitk_started="1"
+ fi
+}
+
+dance() {
+ echo
+ echo
+ br="$(Git_branch)"
+
+ echo "$dir"
+ cd "$dir"
+
+ st="$(Git status)"
+ mods="$(echo "$st" | grep 'modified:')"
+
+ stline="$(echo "$st" | grep '\(behind\|ahead\|up-to-date\|diverged\)')"
+
+ echo "$br"
+ echo "$stline"
+
+ if [ -z "$mods" -a -n "$(echo "$stline" | grep up-to-date)" ]; then
+ return 0
+ fi
+
+ gitk_start
+
+ if [ -n "$(echo "$stline" | grep behind)" ]; then
+ echo "Behind. git merge? (empty = no, 'ok' = yes)"
+ read ok
+ if [ "x$ok" = xok ]; then
+ Git merge
+ fi
+ elif [ -n "$(echo "$stline" | grep ahead)" ]; then
+ echo "Ahead. commit to new branch? (enter name, empty = no)"
+ read wipbranch
+ if [ -n "$wipbranch" ]; then
+ Git checkout -b "$wipbranch"
+ Git_may_fail commit -am wip
+ #Git push --set-upstream origin "$wipbranch"
+ Git checkout "$br"
+ fi
+ echo "$br: git reset --hard origin/$br ? (empty = no, 'ok' = yes)"
+ read ok
+ if [ "x$ok" = xok ]; then
+ Git reset --hard "origin/$br"
+ fi
+ return 0
+ elif [ -n "$(echo "$stline" | grep diverged)" ]; then
+ echo "Diverged. git reset --hard origin/$br ? (empty = no, 'ok' = yes)"
+ read ok
+ if [ "x$ok" = xok ]; then
+ wipbranch="neels/wip_$(date +%Y%m%d_%H%M)"
+ Git checkout -b "$wipbranch"
+ Git_may_fail commit -am wip
+ Git checkout "$br"
+ Git reset --hard "origin/$br"
+ fi
+ elif [ -z "$(echo "$stline" | grep up-to-date)" ]; then
+ echo "Nothing to do."
+ echo "$st"
+ fi
+
+ if [ -n "$mods" ]; then
+ echo "Local mods"
+ echo "$mods"
+ echo
+ echo "commit to new branch? (enter name, empty = no)"
+ read wipbranch
+ if [ -n "$wipbranch" ]; then
+ Git checkout -b "$wipbranch"
+ Git_may_fail commit -am wip
+ #Git push --set-upstream origin "$wipbranch"
+ Git checkout "$br"
+ return 0
+ fi
+
+ echo "commit to this branch $br ? (empty = no, 'ok' = yes)"
+ read ok
+ if [ "x$ok" = xok ]; then
+ Git commit -am wip
+ #Git push
+ return 0
+ fi
+ fi
+}
+
+kill_gitk() {
+ if [ "$gitk_started" = "1" ]; then
+ kill %1
+ gitk_started="0"
+ fi
+}
+
+
+basedir="$(pwd)"
+gitk_started="0"
+for gitdir in */.git ; do
+ cd "$basedir"
+ dir="$(dirname "$gitdir")"
+
+ orig_branch="$(Git_branch)"
+
+ kill_gitk
+ dance
+ cd "$basedir"
+
+ if [ "$orig_branch" != master ]; then
+ kill_gitk
+ git -C "$dir" checkout master || continue
+ dance
+ cd "$basedir"
+ pwd
+ git -C "$dir" checkout "$orig_branch"
+ fi
+
+# if [ "$dir" = "openbsc" ]; then
+# kill_gitk
+# Git checkout "sysmocom/iu"
+# dance
+# fi
+
+ sleep .1
+
+done
+
+kill_gitk
+
+echo
+echo
+./st
+
+# vim: shiftwidth=2 expandtab