chiark / gitweb /
Merge branch 'fixes/independent-help' into refs/top-bases/i/basis-merge
[topgit.git] / tg.sh
diff --git a/tg.sh b/tg.sh
index 734ddcc7fd37577fa6f1a8923512445270ceb603..838dc49185be1fa81b288830ca950725d469ae10 100644 (file)
--- a/tg.sh
+++ b/tg.sh
@@ -18,6 +18,20 @@ die()
        exit 1
 }
 
+# Make sure we are in the worktree, not under .git; die otherwise
+ensure_git_repo_or_die()
+{
+       local is_inside_repo is_inside_git_dir
+       is_inside_repo=1
+       is_inside_git_dir=$(git rev-parse --is-inside-git-dir 2>/dev/null) ||
+               is_inside_repo=0
+
+       case "$is_inside_repo/$is_inside_git_dir" in
+       0*) die "Cannot run outside of a Git repository.";;
+       1/true) die "Cannot run from inside \`.git\` hierarchy, please switch to work-tree.";;
+       esac
+}
+
 # cat_file TOPIC:PATH [FROM]
 # cat the file PATH from branch TOPIC when FROM is empty.
 # FROM can be -i or -w, than the file will be from the index or worktree,
@@ -364,8 +378,8 @@ do_help()
                setup_pager
                @cmddir@/tg-$1 -h 2>&1 || :
                echo
-               if [ -r "@sharedir@/tg-$1.txt" ] ; then
-                       cat "@sharedir@/tg-$1.txt"
+               if [ -r "@docdir@/tg-$1.txt" ] ; then
+                       cat "@docdir@/tg-$1.txt"
                fi
        else
                echo "`basename $0`: no help for $1" 1>&2
@@ -453,6 +467,8 @@ get_temp()
 # check if we should run help and get the topic while we're at it
 help_topic="$(should_do_help "$@")" && { do_help "$help_topic"; exit 0; }
 
+ensure_git_repo_or_die
+
 ## Initial setup
 
 set -e