chiark / gitweb /
Merge commit 'refs/top-bases/fixes/tg--r-require-arg' into fixes/tg--r-require-arg
[topgit.git] / tg.sh
diff --git a/tg.sh b/tg.sh
index 0804f733018773b89ab7890442ecd3c38ba7bef0..9d08d636af97b6b4f3ad574b7fa486cca119f7aa 100644 (file)
--- a/tg.sh
+++ b/tg.sh
@@ -3,7 +3,7 @@
 # (c) Petr Baudis <pasky@suse.cz>  2008
 # GPLv2
 
-TG_VERSION=0.7
+TG_VERSION=0.8
 
 ## Auxiliary functions
 
@@ -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,
@@ -136,6 +145,7 @@ branch_annihilated()
 # of the whole function.
 # If recurse_deps() hits missing dependencies, it will append
 # them to space-separated $missing_deps list and skip them.
+# remote dependencies are processed if no_remotes is unset.
 recurse_deps()
 {
        _cmd="$1"; shift
@@ -143,9 +153,9 @@ recurse_deps()
        _depchain="$*"
 
        _depsfile="$(mktemp -t tg-depsfile.XXXXXX)"
-       # Check also our base against remote base. Checking our head
-       # against remote head has to be done in the helper.
-       if has_remote "top-bases/$_name"; then
+       # If no_remotes is unset check also our base against remote base.
+       # Checking our head against remote head has to be done in the helper.
+       if test -z "$no_remotes" && has_remote "top-bases/$_name"; then
                echo "refs/remotes/$base_remote/top-bases/$_name" >>"$_depsfile"
        fi
 
@@ -268,7 +278,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"
@@ -302,7 +313,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"