1#!/bin/sh 2# 3# This is included in commands that either have to be run from the toplevel 4# of the repository, or with GIT_DIR environment variable properly. 5# If the GIT_DIR does not look like the right correct git-repository, 6# it dies. 7 8# Having this variable in your environment would break scripts because 9# you would cause "cd" to be be taken to unexpected places. If you 10# like CDPATH, define it for your interactive shell sessions without 11# exporting it. 12unset CDPATH 13 14die() { 15echo>&2"$@" 16exit1 17} 18 19usage() { 20 die "Usage:$0$USAGE" 21} 22 23set_reflog_action() { 24if[-z"${GIT_REFLOG_ACTION:+set}"] 25then 26 GIT_REFLOG_ACTION="$*" 27export GIT_REFLOG_ACTION 28fi 29} 30 31is_bare_repository () { 32 git-config --bool --get core.bare || 33case"$GIT_DIR"in 34 .git | */.git)echo false ;; 35*)echo true ;; 36esac 37} 38 39cd_to_toplevel () { 40 cdup=$(git-rev-parse --show-cdup) 41iftest!-z"$cdup" 42then 43cd"$cdup"|| { 44echo>&2"Cannot chdir to$cdup, the toplevel of the working tree" 45exit1 46} 47fi 48} 49 50require_work_tree () { 51test$(is_bare_repository)= false && 52test$(git-rev-parse --is-inside-git-dir)= false || 53 die "fatal:$0cannot be used without a working tree." 54} 55 56if[-z"$LONG_USAGE"] 57then 58 LONG_USAGE="Usage:$0$USAGE" 59else 60 LONG_USAGE="Usage:$0$USAGE 61 62$LONG_USAGE" 63fi 64 65case"$1"in 66-h|--h|--he|--hel|--help) 67echo"$LONG_USAGE" 68exit 69esac 70 71# Make sure we are in a valid repository of a vintage we understand. 72if[-z"$SUBDIRECTORY_OK"] 73then 74:${GIT_DIR=.git} 75 GIT_DIR=$(GIT_DIR="$GIT_DIR" git-rev-parse --git-dir)|| { 76exit=$? 77echo>&2"You need to run this command from the toplevel of the working tree." 78exit$exit 79} 80else 81 GIT_DIR=$(git-rev-parse --git-dir)||exit 82fi 83:${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"}