X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=tg.sh;h=3718702e5cd20eb0aefcfbb36a77801411c88978;hb=7aeb4b93b0179788006c17dd59fe5b971c6ad037;hp=8c174fbff4a2caadfabcaadc47d0a2afaf4d5814;hpb=d42781ac06e1f036da9dc8d910f0c35c87be706b;p=topgit.git diff --git a/tg.sh b/tg.sh index 8c174fb..3718702 100644 --- a/tg.sh +++ b/tg.sh @@ -3,7 +3,7 @@ # (c) Petr Baudis 2008 # GPLv2 -TG_VERSION=0.7 +TG_VERSION=0.8 ## Auxiliary functions @@ -14,7 +14,7 @@ info() die() { - info "fatal: $*" + info "fatal: $*" >&2 exit 1 } @@ -54,6 +54,8 @@ setup_hook() else hook_call="exec $hook_call" fi + # Don't call hook if tg is not installed + hook_call="if which \"$tg\" > /dev/null; then $hook_call; fi" # Insert call into the hook { echo "#!/bin/sh" @@ -126,6 +128,13 @@ branch_annihilated() test "$(git rev-parse "$mb^{tree}")" = "$(git rev-parse "$_name^{tree}")"; } +# is_sha1 REF +# Whether REF is a SHA1 (compared to a symbolic name). +is_sha1() +{ + [ "$(git rev-parse "$1")" = "$1" ] +} + # recurse_deps CMD NAME [BRANCHPATH...] # Recursively eval CMD on all dependencies of NAME. # CMD can refer to $_name for queried branch name, @@ -230,6 +239,27 @@ branch_empty() [ -z "$(git diff-tree "refs/top-bases/$1" "$1" -- | fgrep -v " .top")" ] } +# list_deps +list_deps() +{ + git for-each-ref refs/top-bases | + while read rev type ref; do + name="${ref#refs/top-bases/}" + if branch_annihilated "$name"; then + continue; + fi + + git cat-file blob "$name:.topdeps" | while read dep; do + dep_is_tgish=true + ref_exists "refs/top-bases/$dep" || + dep_is_tgish=false + if ! "$dep_is_tgish" || ! branch_annihilated $dep; then + echo "$name $dep" + fi + done + done +} + # switch_to_base NAME [SEED] switch_to_base() { @@ -269,7 +299,8 @@ do_help() echo "TopGit v$TG_VERSION - A different patch queue manager" echo "Usage: tg [-r REMOTE] ($cmds|help) ..." elif [ -r "@cmddir@"/tg-$1 ] ; then - @cmddir@/tg-$1 -h || : + setup_pager + @cmddir@/tg-$1 -h 2>&1 || : echo if [ -r "@sharedir@/tg-$1.txt" ] ; then cat "@sharedir@/tg-$1.txt" @@ -303,7 +334,7 @@ setup_pager() # now spawn pager - export LESS=${LESS:-FRSX} # as in pager.c:pager_preexec() + export LESS="${LESS:-FRSX}" # as in pager.c:pager_preexec() _pager_fifo_dir="$(mktemp -t -d tg-pager-fifo.XXXXXX)" _pager_fifo="$_pager_fifo_dir/0"