chiark / gitweb /
Indicate the current branch in "tg summary --graphviz"
[topgit.git] / tg.sh
diff --git a/tg.sh b/tg.sh
index 1f259e3a03d60dad30bac2a34253cd9a78a1d7ca..b848f7863ae6f482dd7d37d4df9ebd07e91dc509 100644 (file)
--- a/tg.sh
+++ b/tg.sh
@@ -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()
 {
@@ -304,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"