Signed-off-by: Yann Dirson <ydirson@xxxxxxxxxx> --- contrib/stg-gitk | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 61 insertions(+), 0 deletions(-) diff --git a/contrib/stg-gitk b/contrib/stg-gitk new file mode 100755 index 0000000..dd01ef0 --- /dev/null +++ b/contrib/stg-gitk @@ -0,0 +1,61 @@ +#!/bin/sh +set -e + +# stg-gitk - helper script to graphically display an StGIT stack + +# Displays given branches and stacks, without getting disturbed by +# patch logs. + +# LIMITATIONS: +# - asking gitk to "update" won't detect any new ref +# - no support for spaces in branch names + +# Copyright (c) 2007 Yann Dirson <ydirson@xxxxxxxxxx> +# Subject to the GNU GPL, version 2. + +usage() +{ + echo "Usage: $(basename $0) [<branches>|--all]" + exit 1 +} + +allbranches=0 +case "$1" in +--all) allbranches=1; shift ;; +--*) usage ;; +*) break ;; +esac + +if [ $allbranches = 1 ] && [ "$#" -gt 0 ]; then + usage +fi + +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)" + fi + + for b in "$@"; 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 + # other ref + refdirs="$refdirs $(git-for-each-ref --format="$GIT_DIR/%(refname)" "refs/$b")" + else + echo >&2 "ERROR: no such ref '$b'" + usage + fi + done +fi + +gitk $(find $refdirs -type f -not -name '*.log' | cut -c${GIT_DIR_SPKIPLEN}- ) - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html