From: Ian Jackson Date: Sat, 11 Aug 2018 08:44:05 +0000 (+0100) Subject: gitk wrapper X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=ian-dotfiles.git;a=commitdiff_plain;h=3af81357becdcde7e4bee9e0ed4c28d0411e4532 gitk wrapper --- 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 "$@"