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