chiark / gitweb /
tg-push: new command pushing a tgish branch
[topgit.git] / tg.sh
diff --git a/tg.sh b/tg.sh
index 3af2cd8bbbfa78b0f7826192cffab929b4b54586..8c174fbff4a2caadfabcaadc47d0a2afaf4d5814 100644 (file)
--- a/tg.sh
+++ b/tg.sh
@@ -136,6 +136,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 +144,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
 
@@ -226,7 +227,7 @@ needs_update()
 # branch_empty NAME
 branch_empty()
 {
-       [ -z "$(git diff-tree "refs/top-bases/$1" "$1" | fgrep -v "     .top")" ]
+       [ -z "$(git diff-tree "refs/top-bases/$1" "$1" -- | fgrep -v "  .top")" ]
 }
 
 # switch_to_base NAME [SEED]
@@ -340,8 +341,9 @@ setup_hook "pre-commit"
 ## Dispatch
 
 # We were sourced from another script for our utility functions;
-# this is set by hooks.
-[ -z "$tg__include" ] || return 0
+# this is set by hooks.  Skip the rest of the file.  A simple return doesn't
+# work as expected in every shell.  See http://bugs.debian.org/516188
+if [ -z "$tg__include" ]; then
 
 if [ "$1" = "-r" ]; then
        shift
@@ -374,4 +376,6 @@ help|--help|-h)
        . "@cmddir@"/tg-$cmd;;
 esac
 
+fi
+
 # vim:noet