From 3af81357becdcde7e4bee9e0ed4c28d0411e4532 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 11 Aug 2018 09:44:05 +0100 Subject: [PATCH] gitk wrapper --- scripts/gitk | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 scripts/gitk diff --git a/scripts/gitk b/scripts/gitk new file mode 100755 index 0000000..8b84b3b --- /dev/null +++ b/scripts/gitk @@ -0,0 +1,74 @@ +#!/bin/bash +set -e + +defshow=' ' +showopt () { + eval "showopt_$1=$2" +} +defshow () { + showopt $1 $2 + eval "defshow+='$2 '" +} +defshow B --branches +defshow R --remotes +showopt T --tags +showopt A --all + +opts=() + +getshowopt () { + eval "showopt=\$showopt_$1" +} + +while [ $# -ge 1 ]; do case "$1" in + + +) shift; defshow=''; break ;; # disable defshow + + --) + # remaining args are paths, but we want default showing + break + ;; + -*) + # some gitk option, stop parsing + # user may have to say + to disable default showing + break + ;; + + +*) + arg="$1"; shift + while true; do + + case "$arg" in + + +[BRTA]*) + getshowopt ${arg:1:1} + defshow=''; opts+=($showopt) + ;; + +-[BRTA]*) + getshowopt ${arg:2:1} + defshow="${defshow/ $showopt / }" + arg="${arg#+-?}"; continue + ;; + + +d*) opts+=(--date-order) ;; + +f*) opts+=(--first-parent) ;; + + +) break ;; + + *) echo >&2 "gitk wrapper: unknown + option $arg" + exit 127 + ;; + + esac + + arg="+${arg#+?}" + done + ;; + + *) defshow=''; break ;; # some instruction to gitk + + esac +done + +set -x +exec /usr/bin/gitk "${opts[@]}" $defshow "$@" -- 2.30.2