X-Git-Url: https://git.distorted.org.uk/~mdw/stgit/blobdiff_plain/ab2e05744bac9a64f6239edb61403617ab456016..9ba661f6f88125c177c2bfb33c2ad373adccdc98:/contrib/stg-gitk diff --git a/contrib/stg-gitk b/contrib/stg-gitk index 6ddcfb1..e3ddfb1 100755 --- a/contrib/stg-gitk +++ b/contrib/stg-gitk @@ -12,49 +12,61 @@ set -e # Copyright (c) 2007 Yann Dirson # Subject to the GNU GPL, version 2. +helptext="Usage: $(basename $0) [--refs] [|--all] [-- ]" + usage() { - echo "Usage: $(basename $0) [|--all]" + echo >&2 "$helptext" exit 1 } allbranches=0 refsonly=0 +branches='' while [ "$#" -gt 0 ]; do case "$1" in --refs) refsonly=1 ;; --all) allbranches=1 ;; + --help) echo "$helptext"; exit 0 ;; + --) shift; break ;; --*) usage ;; - *) break ;; + *) branches="$branches $1" ;; esac shift done +# Now any remaining stuff in $@ are additional options for gitk -if [ $allbranches = 1 ] && [ "$#" -gt 0 ]; then +if [ $allbranches = 1 ] && [ "$branches" != "" ]; then usage fi -GIT_DIR=$(git-rev-parse --git-dir) +GIT_DIR=$(git rev-parse --git-dir) GIT_DIR_SPKIPLEN=$(printf "$GIT_DIR/X" | wc -c) refdirs='' if [ $allbranches = 1 ]; then refdirs="$GIT_DIR/refs" else - if [ "$#" = 0 ]; then - set -- "$(stg branch)" + # default to current branch + if [ "$branches" == "" ]; then + branches="$(stg branch)" + fi + if [ "$branches" == "" ]; then + echo >&2 "ERROR: cannot find current branch." + exit 1 fi - for b in "$@"; do + # expand patches for each named branch + for b in $branches; do if [ -e "$GIT_DIR/refs/patches/$b" ]; then # StGIT branch: show all patches refdirs="$refdirs $GIT_DIR/refs/heads/$b $GIT_DIR/refs/patches/$b" elif [ -e "$GIT_DIR/refs/heads/$b" ]; then # other GIT branch refdirs="$refdirs $GIT_DIR/refs/heads/$b" - elif [ $(git-for-each-ref "refs/$b" | wc -l) != 0 ]; then + elif [ $(git for-each-ref "refs/$b" | wc -l) != 0 ]; then # other ref - refdirs="$refdirs $(git-for-each-ref --format="$GIT_DIR/%(refname)" "refs/$b")" + refdirs="$refdirs $(git for-each-ref --format="$GIT_DIR/%(refname)" "refs/$b")" else echo >&2 "ERROR: no such ref '$b'" usage @@ -73,11 +85,11 @@ elif grep -q -- --argscmd $(which gitk); then # This gitk supports --argscmd. # Let's use a hack to pass --all, which was consumed during command-line parsing if [ $allbranches = 1 ]; then - gitk --argscmd="$0 --refs --all" + gitk --argscmd="$0 --refs --all" "$@" else - gitk --argscmd="$0 --refs $*" + gitk --argscmd="$0 --refs $branches" "$@" fi else # This gitk does not support --argscmd, just compute refs onces - gitk $(printrefs) + gitk $(printrefs) "$@" fi