96 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
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 the 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
 |