chiark / gitweb /
tg.sh: Set $base_remote to topgit.remote config value
[topgit.git] / tg.sh
diff --git a/tg.sh b/tg.sh
index a844b5ed2828a27d8018955913474bb5274040ed..c252a87bbb3c0efd1f01d22d38d2e3418164d958 100644 (file)
--- a/tg.sh
+++ b/tg.sh
@@ -47,8 +47,8 @@ setup_ours()
 {
        if [ ! -s "$git_dir/info/attributes" ] || ! grep -q topmsg "$git_dir/info/attributes"; then
                {
-                       echo -e ".topmsg\tmerge=ours"
-                       echo -e ".topdeps\tmerge=ours"
+                       echo ".topmsg   merge=ours"
+                       echo ".topdeps  merge=ours"
                } >>"$git_dir/info/attributes"
        fi
        if ! git config merge.ours.driver >/dev/null; then
@@ -80,6 +80,13 @@ branch_contains()
        [ -z "$(git rev-list ^"$1" "$2")" ]
 }
 
+# ref_exists REF
+# Whether REF is a valid ref name
+ref_exists()
+{
+       git rev-parse --verify "$@" >/dev/null 2>&1
+}
+
 # recurse_deps CMD NAME [BRANCHPATH...]
 # Recursively eval CMD on all dependencies of NAME.
 # CMD can refer to $_name for queried branch name,
@@ -95,18 +102,18 @@ recurse_deps()
        _cmd="$1"; shift
        _name="$1"; # no shift
        _depchain="$*"
-       _depsfile="$(mktemp)"
+       _depsfile="$(mktemp -t tg-depsfile.XXXXXX)"
        git cat-file blob "$_name:.topdeps" >"$_depsfile"
        _ret=0
        while read _dep; do
-               if ! git rev-parse --verify "$_dep" >/dev/null 2>&1; then
+               if ! ref_exists "$_dep" ; then
                        # All hope is lost
                        missing_deps="$missing_deps $_dep"
                        continue
                fi
 
                _dep_is_tgish=1
-               git rev-parse --verify "refs/top-bases/$_dep" >/dev/null 2>&1 ||
+               ref_exists "refs/top-bases/$_dep"  ||
                        _dep_is_tgish=
 
                # Shoo shoo, keep our environment alone!
@@ -195,7 +202,7 @@ do_help()
                        sep="|"
                done
 
-               echo "TopGit v0.1 - A different patch queue manager"
+               echo "TopGit v0.2 - A different patch queue manager"
                echo "Usage: tg ($cmds|help) ..."
        elif [ -r "@sharedir@/tg-$1.txt" ] ; then
                cat "@sharedir@/tg-$1.txt"
@@ -210,6 +217,7 @@ do_help()
 set -e
 git_dir="$(git rev-parse --git-dir)"
 root_dir="$(git rev-parse --show-cdup)"; root_dir="${root_dir:-.}"
+base_remote="$(git config topgit.remote 2>/dev/null)" || :
 # make sure merging the .top* files will always behave sanely
 setup_ours
 setup_hook "pre-commit"