Common Git shell script setup code
. "$(git --exec -path)/git -sh -setup"
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 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 ." .RE
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 .