Document how to tell git to not launch a pager
[git/git.git] / git-sh-setup.sh
CommitLineData
b33e9666
LT
1#!/bin/sh
2#
ae2b0f15
JH
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.
b33e9666 7
365527ad
JH
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
b33e9666 14die() {
8098a178 15 echo >&2 "$@"
b33e9666
LT
16 exit 1
17}
18
d025524d
FK
19usage() {
20 die "Usage: $0 $USAGE"
21}
22
f9474132
SP
23set_reflog_action() {
24 if [ -z "${GIT_REFLOG_ACTION:+set}" ]
25 then
26 GIT_REFLOG_ACTION="$*"
27 export GIT_REFLOG_ACTION
28 fi
29}
30
4b441f47 31is_bare_repository () {
5be60078 32 git rev-parse --is-bare-repository
4b441f47
JH
33}
34
9fde9401 35cd_to_toplevel () {
5be60078 36 cdup=$(git rev-parse --show-cdup)
9fde9401
JH
37 if test ! -z "$cdup"
38 then
39 cd "$cdup" || {
40 echo >&2 "Cannot chdir to $cdup, the toplevel of the working tree"
41 exit 1
42 }
43 fi
44}
45
7eff28a9 46require_work_tree () {
5be60078
JH
47 test $(git rev-parse --is-inside-work-tree) = true &&
48 test $(git rev-parse --is-inside-git-dir) = false ||
7eff28a9
SP
49 die "fatal: $0 cannot be used without a working tree."
50}
51
0cae2346
JS
52get_author_ident_from_commit () {
53 pick_author_script='
54 /^author /{
55 s/'\''/'\''\\'\'\''/g
56 h
57 s/^author \([^<]*\) <[^>]*> .*$/\1/
58 s/'\''/'\''\'\'\''/g
59 s/.*/GIT_AUTHOR_NAME='\''&'\''/p
60
61 g
62 s/^author [^<]* <\([^>]*\)> .*$/\1/
63 s/'\''/'\''\'\'\''/g
64 s/.*/GIT_AUTHOR_EMAIL='\''&'\''/p
65
66 g
67 s/^author [^<]* <[^>]*> \(.*\)$/\1/
68 s/'\''/'\''\'\'\''/g
69 s/.*/GIT_AUTHOR_DATE='\''&'\''/p
70
71 q
72 }
73 '
74 encoding=$(git config i18n.commitencoding || echo UTF-8)
75 git show -s --pretty=raw --encoding="$encoding" "$1" |
76 LANG=C LC_ALL=C sed -ne "$pick_author_script"
77}
78
d025524d
FK
79if [ -z "$LONG_USAGE" ]
80then
81 LONG_USAGE="Usage: $0 $USAGE"
82else
83 LONG_USAGE="Usage: $0 $USAGE
84
85$LONG_USAGE"
86fi
87
88case "$1" in
cad1ed95 89 -h|--h|--he|--hel|--help)
d025524d
FK
90 echo "$LONG_USAGE"
91 exit
92esac
93
c8769f76 94# Make sure we are in a valid repository of a vintage we understand.
d025524d
FK
95if [ -z "$SUBDIRECTORY_OK" ]
96then
97 : ${GIT_DIR=.git}
5be60078 98 GIT_DIR=$(GIT_DIR="$GIT_DIR" git rev-parse --git-dir) || {
120b0dfb
JH
99 exit=$?
100 echo >&2 "You need to run this command from the toplevel of the working tree."
101 exit $exit
102 }
d025524d 103else
5be60078 104 GIT_DIR=$(git rev-parse --git-dir) || exit
d025524d 105fi
c8769f76 106: ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"}