chiark / gitweb /
Merge branch 'fixes/ensure-worktree' into refs/top-bases/i/basis-merge
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 28 Dec 2011 01:52:01 +0000 (01:52 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 28 Dec 2011 01:52:01 +0000 (01:52 +0000)
1  2 
tg.sh

diff --combined tg.sh
index 30217e9369ab56bdd84290531bb2e7dd7c82f196,87d34247b680f9d02d721745d5fe05d4810902f8..ffc120a9bedc18b0bde6501f4264c58fd1c92465
--- 1/tg.sh
--- 2/tg.sh
+++ b/tg.sh
@@@ -18,6 -18,20 +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 +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
@@@ -427,6 -441,8 +441,8 @@@ get_temp(
  [ -d "@cmddir@" ] ||
        die "No command directory: '@cmddir@'"
  
+ ensure_git_repo_or_die
  ## Initial setup
  
  set -e