git-sh-setup(1)
===============

NAME
----
git-sh-setup - Common Git shell script setup code

SYNOPSIS
--------
[verse]
'. "$(git --exec-path)/git-sh-setup"'

DESCRIPTION
-----------

This is not a command the end user would want to run.  Ever.
This documentation is meant for people who are studying the
Porcelain-ish scripts and/or are writing new ones.

The 'git sh-setup' scriptlet is designed to be sourced (using
`.`) by other shell scripts to set up some variables pointing at
the normal Git directories and a few helper shell functions.

Before sourcing it, your script should set up a few variables;
`USAGE` (and `LONG_USAGE`, if any) is used to define message
given by `usage()` shell function.  `SUBDIRECTORY_OK` can be set
if the script can run from a subdirectory of the working tree
(some commands do not).

The scriptlet sets `GIT_DIR` and `GIT_OBJECT_DIRECTORY` shell
variables, but does *not* export them to the environment.

FUNCTIONS
---------

die::
	exit after emitting the supplied error message to the
	standard error stream.

usage::
	die with the usage message.

set_reflog_action::
	Set `GIT_REFLOG_ACTION` environment to a given string (typically
	the name of the program) unless it is already set.  Whenever
	the script runs a `git` command that updates refs, a reflog
	entry is created using the value of this string to leave the
	record of what command updated the ref.

git_editor::
	runs an editor of user's choice (GIT_EDITOR, core.editor, VISUAL or
	EDITOR) on a given file, but error out if no editor is specified
	and the terminal is dumb.

is_bare_repository::
	outputs `true` or `false` to the standard output stream
	to indicate if the repository is a bare repository
	(i.e. without an associated working tree).

cd_to_toplevel::
	runs chdir to the toplevel of the working tree.

require_work_tree::
	checks if the current directory is within the working tree
	of the repository, and otherwise dies.

require_work_tree_exists::
	checks if the working tree associated with the repository
	exists, and otherwise dies.  Often done before calling
	cd_to_toplevel, which is impossible to do if there is no
	working tree.

require_clean_work_tree <action> [<hint>]::
	checks that the working tree and index associated with the
	repository have no uncommitted changes to tracked files.
	Otherwise it emits an error message of the form `Cannot
	<action>: <reason>. <hint>`, and dies.  Example:
+
----------------
require_clean_work_tree rebase "Please commit or stash them."
----------------

get_author_ident_from_commit::
	outputs code for use with eval to set the GIT_AUTHOR_NAME,
	GIT_AUTHOR_EMAIL and GIT_AUTHOR_DATE variables for a given commit.

create_virtual_base::
	modifies the first file so only lines in common with the
	second file remain. If there is insufficient common material,
	then the first file is left empty. The result is suitable
	as a virtual base input for a 3-way merge.

GIT
---
Part of the linkgit:git[1] suite
