1git-sh-setup(1) 2=============== 3 4NAME 5---- 6git-sh-setup - Common Git shell script setup code 7 8SYNOPSIS 9-------- 10[verse] 11'. "$(git --exec-path)/git-sh-setup"' 12 13DESCRIPTION 14----------- 15 16This is not a command the end user would want to run. Ever. 17This documentation is meant for people who are studying the 18Porcelain-ish scripts and/or are writing new ones. 19 20The 'git sh-setup' scriptlet is designed to be sourced (using 21`.`) by other shell scripts to set up some variables pointing at 22the normal Git directories and a few helper shell functions. 23 24Before sourcing it, your script should set up a few variables; 25`USAGE` (and `LONG_USAGE`, if any) is used to define message 26given by `usage()` shell function. `SUBDIRECTORY_OK` can be set 27if the script can run from a subdirectory of the working tree 28(some commands do not). 29 30The scriptlet sets `GIT_DIR` and `GIT_OBJECT_DIRECTORY` shell 31variables, but does *not* export them to the environment. 32 33FUNCTIONS 34--------- 35 36die:: 37 exit after emitting the supplied error message to the 38 standard error stream. 39 40usage:: 41 die with the usage message. 42 43set_reflog_action:: 44 set the message that will be recorded to describe the 45 end-user action in the reflog, when the script updates a 46 ref. 47 48git_editor:: 49 runs an editor of user's choice (GIT_EDITOR, core.editor, VISUAL or 50 EDITOR) on a given file, but error out if no editor is specified 51 and the terminal is dumb. 52 53is_bare_repository:: 54 outputs `true` or `false` to the standard output stream 55 to indicate if the repository is a bare repository 56 (i.e. without an associated working tree). 57 58cd_to_toplevel:: 59 runs chdir to the toplevel of the working tree. 60 61require_work_tree:: 62 checks if the current directory is within the working tree 63 of the repository, and otherwise dies. 64 65require_work_tree_exists:: 66 checks if the working tree associated with the repository 67 exists, and otherwise dies. Often done before calling 68 cd_to_toplevel, which is impossible to do if there is no 69 working tree. 70 71require_clean_work_tree <action> [<hint>]:: 72 checks that the working tree and index associated with the 73 repository have no uncommitted changes to tracked files. 74 Otherwise it emits an error message of the form `Cannot 75 <action>: <reason>. <hint>`, and dies. Example: 76+ 77---------------- 78require_clean_work_tree rebase "Please commit or stash them." 79---------------- 80 81get_author_ident_from_commit:: 82 outputs code for use with eval to set the GIT_AUTHOR_NAME, 83 GIT_AUTHOR_EMAIL and GIT_AUTHOR_DATE variables for a given commit. 84 85GIT 86--- 87Part of the linkgit:git[1] suite