]>
Commit | Line | Data |
---|---|---|
b9d147fb PS |
1 | #ifndef ENVIRONMENT_H |
2 | #define ENVIRONMENT_H | |
3 | ||
4 | #include "strvec.h" | |
5 | ||
32a8f510 EN |
6 | struct repository; |
7 | ||
7ee24e18 EN |
8 | /* |
9 | * The character that begins a commented line in user-editable file | |
10 | * that is subject to stripspace. | |
11 | */ | |
12 | extern char comment_line_char; | |
13 | extern int auto_comment_line_char; | |
14 | ||
b9d147fb PS |
15 | /* |
16 | * Wrapper of getenv() that returns a strdup value. This value is kept | |
17 | * in argv to be freed later. | |
18 | */ | |
19 | const char *getenv_safe(struct strvec *argv, const char *name); | |
20 | ||
32a8f510 EN |
21 | /* Double-check local_repo_env below if you add to this list. */ |
22 | #define GIT_DIR_ENVIRONMENT "GIT_DIR" | |
23 | #define GIT_COMMON_DIR_ENVIRONMENT "GIT_COMMON_DIR" | |
24 | #define GIT_NAMESPACE_ENVIRONMENT "GIT_NAMESPACE" | |
25 | #define GIT_WORK_TREE_ENVIRONMENT "GIT_WORK_TREE" | |
26 | #define GIT_PREFIX_ENVIRONMENT "GIT_PREFIX" | |
27 | #define DEFAULT_GIT_DIR_ENVIRONMENT ".git" | |
28 | #define DB_ENVIRONMENT "GIT_OBJECT_DIRECTORY" | |
29 | #define INDEX_ENVIRONMENT "GIT_INDEX_FILE" | |
30 | #define GRAFT_ENVIRONMENT "GIT_GRAFT_FILE" | |
31 | #define GIT_SHALLOW_FILE_ENVIRONMENT "GIT_SHALLOW_FILE" | |
32 | #define TEMPLATE_DIR_ENVIRONMENT "GIT_TEMPLATE_DIR" | |
33 | #define CONFIG_ENVIRONMENT "GIT_CONFIG" | |
34 | #define CONFIG_DATA_ENVIRONMENT "GIT_CONFIG_PARAMETERS" | |
35 | #define CONFIG_COUNT_ENVIRONMENT "GIT_CONFIG_COUNT" | |
36 | #define EXEC_PATH_ENVIRONMENT "GIT_EXEC_PATH" | |
37 | #define CEILING_DIRECTORIES_ENVIRONMENT "GIT_CEILING_DIRECTORIES" | |
38 | #define NO_REPLACE_OBJECTS_ENVIRONMENT "GIT_NO_REPLACE_OBJECTS" | |
39 | #define GIT_REPLACE_REF_BASE_ENVIRONMENT "GIT_REPLACE_REF_BASE" | |
40 | #define GITATTRIBUTES_FILE ".gitattributes" | |
41 | #define INFOATTRIBUTES_FILE "info/attributes" | |
42 | #define ATTRIBUTE_MACRO_PREFIX "[attr]" | |
43 | #define GITMODULES_FILE ".gitmodules" | |
44 | #define GITMODULES_INDEX ":.gitmodules" | |
45 | #define GITMODULES_HEAD "HEAD:.gitmodules" | |
46 | #define GIT_NOTES_REF_ENVIRONMENT "GIT_NOTES_REF" | |
47 | #define GIT_NOTES_DEFAULT_REF "refs/notes/commits" | |
48 | #define GIT_NOTES_DISPLAY_REF_ENVIRONMENT "GIT_NOTES_DISPLAY_REF" | |
49 | #define GIT_NOTES_REWRITE_REF_ENVIRONMENT "GIT_NOTES_REWRITE_REF" | |
50 | #define GIT_NOTES_REWRITE_MODE_ENVIRONMENT "GIT_NOTES_REWRITE_MODE" | |
51 | #define GIT_LITERAL_PATHSPECS_ENVIRONMENT "GIT_LITERAL_PATHSPECS" | |
52 | #define GIT_GLOB_PATHSPECS_ENVIRONMENT "GIT_GLOB_PATHSPECS" | |
53 | #define GIT_NOGLOB_PATHSPECS_ENVIRONMENT "GIT_NOGLOB_PATHSPECS" | |
54 | #define GIT_ICASE_PATHSPECS_ENVIRONMENT "GIT_ICASE_PATHSPECS" | |
55 | #define GIT_QUARANTINE_ENVIRONMENT "GIT_QUARANTINE_PATH" | |
56 | #define GIT_OPTIONAL_LOCKS_ENVIRONMENT "GIT_OPTIONAL_LOCKS" | |
57 | #define GIT_TEXT_DOMAIN_DIR_ENVIRONMENT "GIT_TEXTDOMAINDIR" | |
58 | ||
59 | /* | |
60 | * Environment variable used in handshaking the wire protocol. | |
61 | * Contains a colon ':' separated list of keys with optional values | |
62 | * 'key[=value]'. Presence of unknown keys and values must be | |
63 | * ignored. | |
64 | */ | |
65 | #define GIT_PROTOCOL_ENVIRONMENT "GIT_PROTOCOL" | |
66 | /* HTTP header used to handshake the wire protocol */ | |
67 | #define GIT_PROTOCOL_HEADER "Git-Protocol" | |
68 | ||
69 | /* | |
70 | * This environment variable is expected to contain a boolean indicating | |
71 | * whether we should or should not treat: | |
72 | * | |
73 | * GIT_DIR=foo.git git ... | |
74 | * | |
75 | * as if GIT_WORK_TREE=. was given. It's not expected that users will make use | |
76 | * of this, but we use it internally to communicate to sub-processes that we | |
77 | * are in a bare repo. If not set, defaults to true. | |
78 | */ | |
79 | #define GIT_IMPLICIT_WORK_TREE_ENVIRONMENT "GIT_IMPLICIT_WORK_TREE" | |
80 | ||
81 | /* | |
82 | * Repository-local GIT_* environment variables; these will be cleared | |
83 | * when git spawns a sub-process that runs inside another repository. | |
84 | * The array is NULL-terminated, which makes it easy to pass in the "env" | |
85 | * parameter of a run-command invocation, or to do a simple walk. | |
86 | */ | |
87 | extern const char * const local_repo_env[]; | |
88 | ||
89 | void setup_git_env(const char *git_dir); | |
90 | ||
91 | /* | |
92 | * Returns true iff we have a configured git repository (either via | |
93 | * setup_git_directory, or in the environment via $GIT_DIR). | |
94 | */ | |
95 | int have_git_dir(void); | |
96 | ||
97 | extern int is_bare_repository_cfg; | |
98 | int is_bare_repository(void); | |
99 | extern char *git_work_tree_cfg; | |
100 | const char *get_git_dir(void); | |
101 | const char *get_git_common_dir(void); | |
102 | const char *get_object_directory(void); | |
103 | char *get_index_file(void); | |
104 | char *get_graft_file(struct repository *r); | |
105 | void set_git_dir(const char *path, int make_realpath); | |
106 | const char *get_git_namespace(void); | |
107 | const char *strip_namespace(const char *namespaced_ref); | |
108 | const char *get_git_work_tree(void); | |
109 | void set_git_work_tree(const char *tree); | |
110 | ||
111 | #define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES" | |
112 | ||
113 | /* Environment bits from configuration mechanism */ | |
114 | extern int trust_executable_bit; | |
115 | extern int trust_ctime; | |
116 | extern int check_stat; | |
117 | extern int has_symlinks; | |
118 | extern int minimum_abbrev, default_abbrev; | |
119 | extern int ignore_case; | |
120 | extern int assume_unchanged; | |
121 | extern int prefer_symlink_refs; | |
122 | extern int warn_ambiguous_refs; | |
123 | extern int warn_on_object_refname_ambiguity; | |
124 | extern char *apply_default_whitespace; | |
125 | extern char *apply_default_ignorewhitespace; | |
126 | extern const char *git_attributes_file; | |
127 | extern const char *git_hooks_path; | |
128 | extern int zlib_compression_level; | |
129 | extern int pack_compression_level; | |
130 | extern size_t packed_git_window_size; | |
131 | extern size_t packed_git_limit; | |
132 | extern size_t delta_base_cache_limit; | |
133 | extern unsigned long big_file_threshold; | |
134 | extern unsigned long pack_size_limit_cfg; | |
135 | ||
136 | /* | |
137 | * Accessors for the core.sharedrepository config which lazy-load the value | |
138 | * from the config (if not already set). The "reset" function can be | |
139 | * used to unset "set" or cached value, meaning that the value will be loaded | |
140 | * fresh from the config file on the next call to get_shared_repository(). | |
141 | */ | |
142 | void set_shared_repository(int value); | |
143 | int get_shared_repository(void); | |
144 | void reset_shared_repository(void); | |
145 | ||
146 | extern int core_preload_index; | |
147 | extern int precomposed_unicode; | |
148 | extern int protect_hfs; | |
149 | extern int protect_ntfs; | |
150 | ||
151 | extern int core_apply_sparse_checkout; | |
152 | extern int core_sparse_checkout_cone; | |
153 | extern int sparse_expect_files_outside_of_patterns; | |
154 | ||
155 | /* | |
156 | * Returns the boolean value of $GIT_OPTIONAL_LOCKS (or the default value). | |
157 | */ | |
158 | int use_optional_locks(void); | |
159 | ||
160 | enum log_refs_config { | |
161 | LOG_REFS_UNSET = -1, | |
162 | LOG_REFS_NONE = 0, | |
163 | LOG_REFS_NORMAL, | |
164 | LOG_REFS_ALWAYS | |
165 | }; | |
166 | extern enum log_refs_config log_all_ref_updates; | |
167 | ||
168 | enum rebase_setup_type { | |
169 | AUTOREBASE_NEVER = 0, | |
170 | AUTOREBASE_LOCAL, | |
171 | AUTOREBASE_REMOTE, | |
172 | AUTOREBASE_ALWAYS | |
173 | }; | |
174 | ||
175 | enum push_default_type { | |
176 | PUSH_DEFAULT_NOTHING = 0, | |
177 | PUSH_DEFAULT_MATCHING, | |
178 | PUSH_DEFAULT_SIMPLE, | |
179 | PUSH_DEFAULT_UPSTREAM, | |
180 | PUSH_DEFAULT_CURRENT, | |
181 | PUSH_DEFAULT_UNSPECIFIED | |
182 | }; | |
183 | ||
184 | extern enum rebase_setup_type autorebase; | |
185 | extern enum push_default_type push_default; | |
186 | ||
187 | enum object_creation_mode { | |
188 | OBJECT_CREATION_USES_HARDLINKS = 0, | |
189 | OBJECT_CREATION_USES_RENAMES = 1 | |
190 | }; | |
191 | ||
192 | extern enum object_creation_mode object_creation_mode; | |
193 | ||
194 | extern char *notes_ref_name; | |
195 | ||
196 | extern int grafts_replace_parents; | |
197 | ||
198 | extern int repository_format_precious_objects; | |
199 | extern int repository_format_worktree_config; | |
200 | ||
201 | /* | |
202 | * Create a temporary file rooted in the object database directory, or | |
203 | * die on failure. The filename is taken from "pattern", which should have the | |
204 | * usual "XXXXXX" trailer, and the resulting filename is written into the | |
205 | * "template" buffer. Returns the open descriptor. | |
206 | */ | |
207 | int odb_mkstemp(struct strbuf *temp_filename, const char *pattern); | |
208 | ||
209 | /* | |
210 | * Create a pack .keep file named "name" (which should generally be the output | |
211 | * of odb_pack_name). Returns a file descriptor opened for writing, or -1 on | |
212 | * error. | |
213 | */ | |
214 | int odb_pack_keep(const char *name); | |
215 | ||
216 | const char *get_log_output_encoding(void); | |
217 | const char *get_commit_output_encoding(void); | |
218 | ||
219 | extern const char *git_commit_encoding; | |
220 | extern const char *git_log_output_encoding; | |
221 | ||
222 | extern const char *editor_program; | |
223 | extern const char *askpass_program; | |
224 | extern const char *excludes_file; | |
225 | ||
226 | /* | |
227 | * Should we print an ellipsis after an abbreviated SHA-1 value | |
228 | * when doing diff-raw output or indicating a detached HEAD? | |
229 | */ | |
230 | int print_sha1_ellipsis(void); | |
231 | ||
b9d147fb | 232 | #endif |