git-sh-setup.1 (4448B)
- '\" t
- .\" Title: git-sh-setup
- .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
- .\" Generator: DocBook XSL Stylesheets v1.79.2 <http://docbook.sf.net/>
- .\" Date: 2025-03-14
- .\" Manual: Git Manual
- .\" Source: Git 2.49.0
- .\" Language: English
- .\"
- .TH "GIT\-SH\-SETUP" "1" "2025-03-14" "Git 2\&.49\&.0" "Git Manual"
- .\" -----------------------------------------------------------------
- .\" * Define some portability stuff
- .\" -----------------------------------------------------------------
- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- .\" http://bugs.debian.org/507673
- .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- .ie \n(.g .ds Aq \(aq
- .el .ds Aq '
- .\" -----------------------------------------------------------------
- .\" * set default formatting
- .\" -----------------------------------------------------------------
- .\" disable hyphenation
- .nh
- .\" disable justification (adjust text to left margin only)
- .ad l
- .\" -----------------------------------------------------------------
- .\" * MAIN CONTENT STARTS HERE *
- .\" -----------------------------------------------------------------
- .SH "NAME"
- git-sh-setup \- Common Git shell script setup code
- .SH "SYNOPSIS"
- .sp
- .nf
- \fI\&. "$(git \-\-exec\-path)/git\-sh\-setup"\fR
- .fi
- .SH "DESCRIPTION"
- .sp
- 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\&.
- .sp
- The \fIgit sh\-setup\fR 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\&.
- .sp
- Before sourcing it, your script should set up a few variables; \fBUSAGE\fR (and \fBLONG_USAGE\fR, if any) is used to define the message given by \fBusage\fR() shell function\&. \fBSUBDIRECTORY_OK\fR can be set if the script can run from a subdirectory of the working tree (some commands do not)\&.
- .sp
- The scriptlet sets \fBGIT_DIR\fR and \fBGIT_OBJECT_DIRECTORY\fR shell variables, but does \fBnot\fR export them to the environment\&.
- .SH "FUNCTIONS"
- .PP
- die
- .RS 4
- exit after emitting the supplied error message to the standard error stream\&.
- .RE
- .PP
- usage
- .RS 4
- die with the usage message\&.
- .RE
- .PP
- set_reflog_action
- .RS 4
- Set
- \fBGIT_REFLOG_ACTION\fR
- environment to a given string (typically the name of the program) unless it is already set\&. Whenever the script runs a
- \fBgit\fR
- 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\&.
- .RE
- .PP
- git_editor
- .RS 4
- runs an editor of user\(cqs 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\&.
- .RE
- .PP
- is_bare_repository
- .RS 4
- outputs
- \fBtrue\fR
- or
- \fBfalse\fR
- to the standard output stream to indicate if the repository is a bare repository (i\&.e\&. without an associated working tree)\&.
- .RE
- .PP
- cd_to_toplevel
- .RS 4
- runs chdir to the toplevel of the working tree\&.
- .RE
- .PP
- require_work_tree
- .RS 4
- checks if the current directory is within the working tree of the repository, and otherwise dies\&.
- .RE
- .PP
- require_work_tree_exists
- .RS 4
- 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\&.
- .RE
- .PP
- require_clean_work_tree <action> [<hint>]
- .RS 4
- 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
- \fBCannot\fR
- \fI<action>\fR\fB:\fR
- \fI<reason>\fR\&.
- \fI<hint>\fR, and dies\&. Example:
- .sp
- .if n \{\
- .RS 4
- .\}
- .nf
- require_clean_work_tree rebase "Please commit or stash them\&."
- .fi
- .if n \{\
- .RE
- .\}
- .RE
- .PP
- get_author_ident_from_commit
- .RS 4
- outputs code for use with eval to set the GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL and GIT_AUTHOR_DATE variables for a given commit\&.
- .RE
- .PP
- create_virtual_base
- .RS 4
- 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\&.
- .RE
- .SH "GIT"
- .sp
- Part of the \fBgit\fR(1) suite