From: Uwe Kleine-König Date: Tue, 3 Mar 2009 10:01:23 +0000 (+0100) Subject: Merge commit 'refs/top-bases/fixes/ensure-worktree' into fixes/ensure-worktree X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topgit.git;a=commitdiff_plain;h=844fd50a52ce460d75c1f2dac46f41ea6fee7035;hp=f1fb43163e3c495106c5bbd54fdb0f9a422a13b0 Merge commit 'refs/top-bases/fixes/ensure-worktree' into fixes/ensure-worktree --- diff --git a/.topdeps b/.topdeps new file mode 100644 index 0000000..0459513 --- /dev/null +++ b/.topdeps @@ -0,0 +1 @@ +upstream diff --git a/.topmsg b/.topmsg new file mode 100644 index 0000000..e0237b6 --- /dev/null +++ b/.topmsg @@ -0,0 +1,15 @@ +From: martin f. krafft +Subject: [TopGit PATCH] Ensure we are inside a Git worktree + +Bert Wesarg suggests to check that we are not inside the .git directory before +setting up topgit. Because git rev-parse --git-dir only works in the top .git +dir, not deeper (i.e. inside .git/refs) and will always return "." + +This patch thus causes topgit to die early on when it's called from outside of +a Git repository, or from underneath .git and outputs error messages +accordingly. + +This temporarily makes it even more impossible to call tg --help, but I expect +to have that fixed soon too. + +Signed-off-by: martin f. krafft diff --git a/tg.sh b/tg.sh index f0496f1..3183b80 100644 --- 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:file" # Like `git cat-file blob $1`, but topics '(i)' and '(w)' means index and worktree cat_file() @@ -324,6 +338,8 @@ setup_pager() [ -d "@cmddir@" ] || die "No command directory: '@cmddir@'" +ensure_git_repo_or_die + ## Initial setup set -e