6c2bec96a8
Document rules to use GIT_REFLOG_ACTION variable in the scripted Porcelain. git-rebase--interactive locally violates them, but it is a leaf user that does not call out to or dot-source other scripts, so it does not urgently need to be fixed. * jc/reflog-doc: setup_reflog_action: document the rules for using GIT_REFLOG_ACTION
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 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
|