On Fri, Dec 03, 2010 at 10:06:36PM +0100, Dirk SÃsserott wrote: > I wrote some shell scripts that do sth with my git repositories. I place > my scripts in my ~/bin folder (not in the repo). So the first step in my > scripts is always to check whether they get called from whithin a git > repo and bail out if they don't. > > I do this like so: > > --------------------- > if [ "$(git rev-parse --is-inside-work-tree)" = "true" ] # (1) > then > here=$(pwd) > cdup=$(git rev-parse --show-cdup); # (2a) > cdup=${cdup:-"."} # (2b) > cd $cdup # (2c) > > [do sth useful from the topdir] > > cd $here > exit 0; > else > echo "Not inside a git working tree." > exit 1; > fi > --------------------- Since you are writing shell scripts, you may be interested in doing: . git-sh-setup require_work_tree cd_to_toplevel > 1. Wouldn't it be useful, if "git rev-parse" (1) had an option "-q" that > simply indicates whether "--is-inside-work-tree" is true by means of the > return code? Actually it has an option "-q" but that doesn't work with > "--is-inside-work-tree". Yeah, in general rev-parse's "-q" is annoying. It only works with checking revisions (like "git rev-parse -q --verify HEAD"), and it probably should apply to a lot more. Patches welcome. > 2. Wouldn't it be useful, if "git rev-parse --show-cdup" (2a) would > return a dot "." instead of nothing if we are already in the topdir? > That would make the steps (2a), (2b), (2c) to a simple "cd $(git > rev-parse --show-cdup)". I'm hesitant to change it, as that is a public interface for shell scripts. However, there is also "--show-toplevel" which will do what you want in one line (or just cd_to_toplevel as I mentioned above). > What do you think? If appreciated, I'd like to work on a patch for (1). Please do. -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html