]>
Commit | Line | Data |
---|---|---|
f5918330 | 1 | /* |
359fc2d2 | 2 | * Copyright (C) the libgit2 contributors. All rights reserved. |
f5918330 | 3 | * |
bb742ede VM |
4 | * This file is part of libgit2, distributed under the GNU GPL v2 with |
5 | * a Linking Exception. For full terms see the included COPYING file. | |
f5918330 | 6 | */ |
c15648cb SP |
7 | #ifndef INCLUDE_git_common_h__ |
8 | #define INCLUDE_git_common_h__ | |
9 | ||
58519018 | 10 | #include <time.h> |
00571828 | 11 | #include <stdlib.h> |
e3fe32b6 | 12 | |
c15648cb | 13 | #ifdef __cplusplus |
87d9869f VM |
14 | # define GIT_BEGIN_DECL extern "C" { |
15 | # define GIT_END_DECL } | |
c15648cb | 16 | #else |
87d9869f VM |
17 | /** Start declarations in C mode */ |
18 | # define GIT_BEGIN_DECL /* empty */ | |
19 | /** End declarations in C mode */ | |
20 | # define GIT_END_DECL /* empty */ | |
c15648cb SP |
21 | #endif |
22 | ||
240a85cf | 23 | #if defined(_MSC_VER) && _MSC_VER < 1800 |
22a2d3d5 | 24 | # include <stdint.h> |
0ac4a5de | 25 | #elif !defined(__CLANG_INTTYPES_H) |
0f9b6742 ET |
26 | # include <inttypes.h> |
27 | #endif | |
28 | ||
98444536 CMN |
29 | #ifdef DOCURIUM |
30 | /* | |
31 | * This is so clang's doc parser acknowledges comments on functions | |
32 | * with size_t parameters. | |
33 | */ | |
34 | typedef size_t size_t; | |
35 | #endif | |
36 | ||
16a67770 | 37 | /** Declare a public function exported for application use. */ |
d2a1861e | 38 | #if __GNUC__ >= 4 |
3b8ab0b9 | 39 | # define GIT_EXTERN(type) extern \ |
87d9869f VM |
40 | __attribute__((visibility("default"))) \ |
41 | type | |
25e9b4dd | 42 | #elif defined(_MSC_VER) |
ac3d33df | 43 | # define GIT_EXTERN(type) __declspec(dllexport) type __cdecl |
16a67770 | 44 | #else |
3b8ab0b9 | 45 | # define GIT_EXTERN(type) extern type |
16a67770 SP |
46 | #endif |
47 | ||
ac3d33df JK |
48 | /** Declare a callback function for application use. */ |
49 | #if defined(_MSC_VER) | |
50 | # define GIT_CALLBACK(name) (__cdecl *name) | |
51 | #else | |
52 | # define GIT_CALLBACK(name) (*name) | |
53 | #endif | |
54 | ||
55 | /** Declare a function as deprecated. */ | |
56 | #if defined(__GNUC__) | |
57 | # define GIT_DEPRECATED(func) \ | |
58 | __attribute__((deprecated)) \ | |
59 | __attribute__((used)) \ | |
60 | func | |
61 | #elif defined(_MSC_VER) | |
62 | # define GIT_DEPRECATED(func) __declspec(deprecated) func | |
63 | #else | |
64 | # define GIT_DEPRECATED(func) func | |
65 | #endif | |
66 | ||
15bffce9 SP |
67 | /** Declare a function's takes printf style arguments. */ |
68 | #ifdef __GNUC__ | |
69 | # define GIT_FORMAT_PRINTF(a,b) __attribute__((format (printf, a, b))) | |
70 | #else | |
71 | # define GIT_FORMAT_PRINTF(a,b) /* empty */ | |
72 | #endif | |
73 | ||
c02f1392 | 74 | #if (defined(_WIN32)) && !defined(__CYGWIN__) |
0657e46d RG |
75 | #define GIT_WIN32 1 |
76 | #endif | |
77 | ||
0f5e1f3b | 78 | #ifdef __amigaos4__ |
327fb51c | 79 | #include <netinet/in.h> |
0f5e1f3b CY |
80 | #endif |
81 | ||
c15648cb | 82 | /** |
f5918330 | 83 | * @file git2/common.h |
c15648cb SP |
84 | * @brief Git common platform definitions |
85 | * @defgroup git_common Git common platform definitions | |
86 | * @ingroup Git | |
87 | * @{ | |
88 | */ | |
c15648cb | 89 | |
16a67770 | 90 | GIT_BEGIN_DECL |
00571828 | 91 | |
0657e46d RG |
92 | /** |
93 | * The separator used in path list strings (ie like in the PATH | |
c25aa7cd PP |
94 | * environment variable). A semi-colon ";" is used on Windows and |
95 | * AmigaOS, and a colon ":" for all other systems. | |
0657e46d | 96 | */ |
c25aa7cd | 97 | #if defined(GIT_WIN32) || defined(AMIGA) |
0657e46d RG |
98 | #define GIT_PATH_LIST_SEPARATOR ';' |
99 | #else | |
100 | #define GIT_PATH_LIST_SEPARATOR ':' | |
101 | #endif | |
102 | ||
103 | /** | |
b1ec25fa | 104 | * The maximum length of a valid git path. |
0657e46d RG |
105 | */ |
106 | #define GIT_PATH_MAX 4096 | |
107 | ||
613d5eb9 PK |
108 | /** |
109 | * The string representation of the null object ID. | |
110 | */ | |
111 | #define GIT_OID_HEX_ZERO "0000000000000000000000000000000000000000" | |
112 | ||
536955f9 VM |
113 | /** |
114 | * Return the version of the libgit2 library | |
115 | * being currently used. | |
116 | * | |
117 | * @param major Store the major version number | |
118 | * @param minor Store the minor version number | |
119 | * @param rev Store the revision (patch) number | |
22a2d3d5 | 120 | * @return 0 on success or an error code on failure |
536955f9 | 121 | */ |
22a2d3d5 | 122 | GIT_EXTERN(int) git_libgit2_version(int *major, int *minor, int *rev); |
536955f9 | 123 | |
e564e496 | 124 | /** |
c9f5298b VM |
125 | * Combinations of these values describe the features with which libgit2 |
126 | * was compiled | |
e564e496 | 127 | */ |
0f1f9833 | 128 | typedef enum { |
77e46232 CMN |
129 | /** |
130 | * If set, libgit2 was built thread-aware and can be safely used from multiple | |
131 | * threads. | |
132 | */ | |
ebb3c506 | 133 | GIT_FEATURE_THREADS = (1 << 0), |
77e46232 CMN |
134 | /** |
135 | * If set, libgit2 was built with and linked against a TLS implementation. | |
136 | * Custom TLS streams may still be added by the user to support HTTPS | |
137 | * regardless of this. | |
138 | */ | |
0269833f | 139 | GIT_FEATURE_HTTPS = (1 << 1), |
77e46232 CMN |
140 | /** |
141 | * If set, libgit2 was built with and linked against libssh2. A custom | |
142 | * transport may still be added by the user to support libssh2 regardless of | |
143 | * this. | |
144 | */ | |
0269833f | 145 | GIT_FEATURE_SSH = (1 << 2), |
77e46232 CMN |
146 | /** |
147 | * If set, libgit2 was built with support for sub-second resolution in file | |
148 | * modification times. | |
149 | */ | |
e579e0f7 | 150 | GIT_FEATURE_NSEC = (1 << 3) |
2491c416 | 151 | } git_feature_t; |
e564e496 SC |
152 | |
153 | /** | |
154 | * Query compile time options for libgit2. | |
155 | * | |
ebb3c506 | 156 | * @return A combination of GIT_FEATURE_* values. |
e564e496 | 157 | * |
ebb3c506 | 158 | * - GIT_FEATURE_THREADS |
0f1f9833 RB |
159 | * Libgit2 was compiled with thread support. Note that thread support is |
160 | * still to be seen as a 'work in progress' - basic object lookups are | |
161 | * believed to be threadsafe, but other operations may not be. | |
e564e496 | 162 | * |
ebb3c506 | 163 | * - GIT_FEATURE_HTTPS |
0f1f9833 RB |
164 | * Libgit2 supports the https:// protocol. This requires the openssl |
165 | * library to be found when compiling libgit2. | |
c9f5298b | 166 | * |
ebb3c506 | 167 | * - GIT_FEATURE_SSH |
c9f5298b | 168 | * Libgit2 supports the SSH protocol for network operations. This requires |
96484ecd | 169 | * the libssh2 library to be found when compiling libgit2 |
e579e0f7 MB |
170 | * |
171 | * - GIT_FEATURE_NSEC | |
172 | * Libgit2 supports the sub-second resolution in file modification times. | |
e564e496 | 173 | */ |
c9f5298b | 174 | GIT_EXTERN(int) git_libgit2_features(void); |
e564e496 | 175 | |
a295bd2d CMN |
176 | /** |
177 | * Global library options | |
178 | * | |
179 | * These are used to select which global option to set or get and are | |
180 | * used in `git_libgit2_opts()`. | |
181 | */ | |
2e62e7c2 | 182 | typedef enum { |
a0f777c8 VM |
183 | GIT_OPT_GET_MWINDOW_SIZE, |
184 | GIT_OPT_SET_MWINDOW_SIZE, | |
185 | GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, | |
5540d947 RB |
186 | GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, |
187 | GIT_OPT_GET_SEARCH_PATH, | |
188 | GIT_OPT_SET_SEARCH_PATH, | |
d8771592 VM |
189 | GIT_OPT_SET_CACHE_OBJECT_LIMIT, |
190 | GIT_OPT_SET_CACHE_MAX_SIZE, | |
a2378ae4 | 191 | GIT_OPT_ENABLE_CACHING, |
b99b10f2 L |
192 | GIT_OPT_GET_CACHED_MEMORY, |
193 | GIT_OPT_GET_TEMPLATE_PATH, | |
737b445a WS |
194 | GIT_OPT_SET_TEMPLATE_PATH, |
195 | GIT_OPT_SET_SSL_CERT_LOCATIONS, | |
de870533 | 196 | GIT_OPT_SET_USER_AGENT, |
22a19f5b | 197 | GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, |
28d0ba0b | 198 | GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION, |
fa72d6da | 199 | GIT_OPT_SET_SSL_CIPHERS, |
f1dba144 | 200 | GIT_OPT_GET_USER_AGENT, |
61acc9fa | 201 | GIT_OPT_ENABLE_OFS_DELTA, |
6c23704d | 202 | GIT_OPT_ENABLE_FSYNC_GITDIR, |
d5e6ca1e SS |
203 | GIT_OPT_GET_WINDOWS_SHAREMODE, |
204 | GIT_OPT_SET_WINDOWS_SHAREMODE, | |
35079f50 | 205 | GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION, |
ac3d33df JK |
206 | GIT_OPT_SET_ALLOCATOR, |
207 | GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY, | |
208 | GIT_OPT_GET_PACK_MAX_OBJECTS, | |
22a2d3d5 UG |
209 | GIT_OPT_SET_PACK_MAX_OBJECTS, |
210 | GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS, | |
211 | GIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE, | |
212 | GIT_OPT_GET_MWINDOW_FILE_LIMIT, | |
c25aa7cd PP |
213 | GIT_OPT_SET_MWINDOW_FILE_LIMIT, |
214 | GIT_OPT_SET_ODB_PACKED_PRIORITY, | |
215 | GIT_OPT_SET_ODB_LOOSE_PRIORITY, | |
216 | GIT_OPT_GET_EXTENSIONS, | |
e579e0f7 MB |
217 | GIT_OPT_SET_EXTENSIONS, |
218 | GIT_OPT_GET_OWNER_VALIDATION, | |
219 | GIT_OPT_SET_OWNER_VALIDATION | |
2e62e7c2 | 220 | } git_libgit2_opt_t; |
59853eff VM |
221 | |
222 | /** | |
223 | * Set or query a library global option | |
224 | * | |
225 | * Available options: | |
226 | * | |
b4117e19 | 227 | * * opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *): |
59853eff | 228 | * |
b4117e19 | 229 | * > Get the maximum mmap window size |
5540d947 | 230 | * |
b4117e19 | 231 | * * opts(GIT_OPT_SET_MWINDOW_SIZE, size_t): |
5540d947 | 232 | * |
b4117e19 CMN |
233 | * > Set the maximum mmap window size |
234 | * | |
235 | * * opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *): | |
236 | * | |
237 | * > Get the maximum memory that will be mapped in total by the library | |
238 | * | |
239 | * * opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t): | |
240 | * | |
22a2d3d5 UG |
241 | * > Set the maximum amount of memory that can be mapped at any time |
242 | * > by the library | |
243 | * | |
244 | * * opts(GIT_OPT_GET_MWINDOW_FILE_LIMIT, size_t *): | |
245 | * | |
246 | * > Get the maximum number of files that will be mapped at any time by the | |
247 | * > library | |
248 | * | |
249 | * * opts(GIT_OPT_SET_MWINDOW_FILE_LIMIT, size_t): | |
250 | * | |
251 | * > Set the maximum number of files that can be mapped at any time | |
252 | * > by the library. The default (0) is unlimited. | |
59853eff | 253 | * |
42dee8ec | 254 | * * opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf) |
b4117e19 CMN |
255 | * |
256 | * > Get the search path for a given level of config data. "level" must | |
3eac1037 ET |
257 | * > be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`, |
258 | * > `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`. | |
259 | * > The search path is written to the `out` buffer. | |
b4117e19 CMN |
260 | * |
261 | * * opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path) | |
262 | * | |
263 | * > Set the search path for a level of config data. The search path | |
264 | * > applied to shared attributes and ignore files, too. | |
265 | * > | |
266 | * > - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR. | |
267 | * > Pass NULL to reset to the default (generally based on environment | |
268 | * > variables). Use magic path `$PATH` to include the old value | |
269 | * > of the path (if you want to prepend or append, for instance). | |
270 | * > | |
3eac1037 ET |
271 | * > - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`, |
272 | * > `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or | |
273 | * > `GIT_CONFIG_LEVEL_PROGRAMDATA`. | |
5540d947 | 274 | * |
ac3d33df | 275 | * * opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_object_t type, size_t size) |
2e62e7c2 RB |
276 | * |
277 | * > Set the maximum data size for the given type of object to be | |
278 | * > considered eligible for caching in memory. Setting to value to | |
279 | * > zero means that that type of object will not be cached. | |
ac3d33df JK |
280 | * > Defaults to 0 for GIT_OBJECT_BLOB (i.e. won't cache blobs) and 4k |
281 | * > for GIT_OBJECT_COMMIT, GIT_OBJECT_TREE, and GIT_OBJECT_TAG. | |
2e62e7c2 RB |
282 | * |
283 | * * opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes) | |
284 | * | |
285 | * > Set the maximum total data size that will be cached in memory | |
286 | * > across all repositories before libgit2 starts evicting objects | |
287 | * > from the cache. This is a soft limit, in that the library might | |
288 | * > briefly exceed it, but will start aggressively evicting objects | |
6057c4a0 | 289 | * > from cache when that happens. The default cache size is 256MB. |
2e62e7c2 RB |
290 | * |
291 | * * opts(GIT_OPT_ENABLE_CACHING, int enabled) | |
292 | * | |
293 | * > Enable or disable caching completely. | |
294 | * > | |
295 | * > Because caches are repository-specific, disabling the cache | |
296 | * > cannot immediately clear all cached objects, but each cache will | |
297 | * > be cleared on the next attempt to update anything in it. | |
298 | * | |
299 | * * opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed) | |
300 | * | |
301 | * > Get the current bytes in cache and the maximum that would be | |
302 | * > allowed in the cache. | |
303 | * | |
42dee8ec | 304 | * * opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out) |
b99b10f2 L |
305 | * |
306 | * > Get the default template path. | |
42dee8ec | 307 | * > The path is written to the `out` buffer. |
b99b10f2 L |
308 | * |
309 | * * opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path) | |
310 | * | |
311 | * > Set the default template path. | |
312 | * > | |
313 | * > - `path` directory of template. | |
314 | * | |
737b445a WS |
315 | * * opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path) |
316 | * | |
317 | * > Set the SSL certificate-authority locations. | |
318 | * > | |
319 | * > - `file` is the location of a file containing several | |
320 | * > certificates concatenated together. | |
321 | * > - `path` is the location of a directory holding several | |
322 | * > certificates, one per file. | |
323 | * > | |
324 | * > Either parameter may be `NULL`, but not both. | |
325 | * | |
de870533 CMN |
326 | * * opts(GIT_OPT_SET_USER_AGENT, const char *user_agent) |
327 | * | |
5bc93eae ET |
328 | * > Set the value of the User-Agent header. This value will be |
329 | * > appended to "git/1.0", for compatibility with other git clients. | |
330 | * > | |
331 | * > - `user_agent` is the value that will be delivered as the | |
332 | * > User-Agent header on HTTP requests. | |
333 | * | |
d5e6ca1e SS |
334 | * * opts(GIT_OPT_SET_WINDOWS_SHAREMODE, unsigned long value) |
335 | * | |
336 | * > Set the share mode used when opening files on Windows. | |
337 | * > For more information, see the documentation for CreateFile. | |
338 | * > The default is: FILE_SHARE_READ | FILE_SHARE_WRITE. This is | |
339 | * > ignored and unused on non-Windows platforms. | |
340 | * | |
341 | * * opts(GIT_OPT_GET_WINDOWS_SHAREMODE, unsigned long *value) | |
342 | * | |
343 | * > Get the share mode used when opening files on Windows. | |
344 | * | |
22a19f5b ET |
345 | * * opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled) |
346 | * | |
347 | * > Enable strict input validation when creating new objects | |
348 | * > to ensure that all inputs to the new objects are valid. For | |
349 | * > example, when this is enabled, the parent(s) and tree inputs | |
350 | * > will be validated when creating a new commit. This defaults | |
93392cdd ET |
351 | * > to enabled. |
352 | * | |
28d0ba0b | 353 | * * opts(GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION, int enabled) |
452bf57c | 354 | * |
28d0ba0b ET |
355 | * > Validate the target of a symbolic ref when creating it. For |
356 | * > example, `foobar` is not a valid ref, therefore `foobar` is | |
357 | * > not a valid target for a symbolic ref by default, whereas | |
358 | * > `refs/heads/foobar` is. Disabling this bypasses validation | |
359 | * > so that an arbitrary strings such as `foobar` can be used | |
360 | * > for a symbolic ref target. This defaults to enabled. | |
452bf57c | 361 | * |
fa72d6da DB |
362 | * * opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers) |
363 | * | |
364 | * > Set the SSL ciphers use for HTTPS connections. | |
365 | * > | |
366 | * > - `ciphers` is the list of ciphers that are eanbled. | |
22a19f5b | 367 | * |
c25aa7cd PP |
368 | * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out) |
369 | * | |
370 | * > Get the value of the User-Agent header. | |
371 | * > The User-Agent is written to the `out` buffer. | |
372 | * | |
61acc9fa GS |
373 | * * opts(GIT_OPT_ENABLE_OFS_DELTA, int enabled) |
374 | * | |
375 | * > Enable or disable the use of "offset deltas" when creating packfiles, | |
376 | * > and the negotiation of them when talking to a remote server. | |
377 | * > Offset deltas store a delta base location as an offset into the | |
378 | * > packfile from the current location, which provides a shorter encoding | |
379 | * > and thus smaller resultant packfiles. | |
380 | * > Packfiles containing offset deltas can still be read. | |
381 | * > This defaults to enabled. | |
382 | * | |
6c23704d | 383 | * * opts(GIT_OPT_ENABLE_FSYNC_GITDIR, int enabled) |
6d3ad7e0 | 384 | * |
6c23704d | 385 | * > Enable synchronized writes of files in the gitdir using `fsync` |
6d3ad7e0 ET |
386 | * > (or the platform equivalent) to ensure that new object data |
387 | * > is written to permanent storage, not simply cached. This | |
388 | * > defaults to disabled. | |
389 | * | |
35079f50 PS |
390 | * opts(GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION, int enabled) |
391 | * | |
392 | * > Enable strict verification of object hashsums when reading | |
393 | * > objects from disk. This may impact performance due to an | |
394 | * > additional checksum calculation on each object. This defaults | |
395 | * > to enabled. | |
396 | * | |
ac3d33df JK |
397 | * opts(GIT_OPT_SET_ALLOCATOR, git_allocator *allocator) |
398 | * | |
399 | * > Set the memory allocator to a different memory allocator. This | |
400 | * > allocator will then be used to make all memory allocations for | |
401 | * > libgit2 operations. If the given `allocator` is NULL, then the | |
402 | * > system default will be restored. | |
403 | * | |
404 | * opts(GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY, int enabled) | |
405 | * | |
406 | * > Ensure that there are no unsaved changes in the index before | |
407 | * > beginning any operation that reloads the index from disk (eg, | |
408 | * > checkout). If there are unsaved changes, the instruction will | |
409 | * > fail. (Using the FORCE flag to checkout will still overwrite | |
410 | * > these changes.) | |
411 | * | |
412 | * opts(GIT_OPT_GET_PACK_MAX_OBJECTS, size_t *out) | |
413 | * | |
414 | * > Get the maximum number of objects libgit2 will allow in a pack | |
415 | * > file when downloading a pack file from a remote. This can be | |
416 | * > used to limit maximum memory usage when fetching from an untrusted | |
417 | * > remote. | |
418 | * | |
419 | * opts(GIT_OPT_SET_PACK_MAX_OBJECTS, size_t objects) | |
420 | * | |
421 | * > Set the maximum number of objects libgit2 will allow in a pack | |
422 | * > file when downloading a pack file from a remote. | |
423 | * | |
22a2d3d5 UG |
424 | * opts(GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS, int enabled) |
425 | * > This will cause .keep file existence checks to be skipped when | |
426 | * > accessing packfiles, which can help performance with remote filesystems. | |
427 | * | |
428 | * opts(GIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE, int enabled) | |
429 | * > When connecting to a server using NTLM or Negotiate | |
430 | * > authentication, use expect/continue when POSTing data. | |
431 | * > This option is not available on Windows. | |
432 | * | |
c25aa7cd PP |
433 | * opts(GIT_OPT_SET_ODB_PACKED_PRIORITY, int priority) |
434 | * > Override the default priority of the packed ODB backend which | |
435 | * > is added when default backends are assigned to a repository | |
436 | * | |
437 | * opts(GIT_OPT_SET_ODB_LOOSE_PRIORITY, int priority) | |
438 | * > Override the default priority of the loose ODB backend which | |
439 | * > is added when default backends are assigned to a repository | |
440 | * | |
441 | * opts(GIT_OPT_GET_EXTENSIONS, git_strarray *out) | |
442 | * > Returns the list of git extensions that are supported. This | |
443 | * > is the list of built-in extensions supported by libgit2 and | |
444 | * > custom extensions that have been added with | |
445 | * > `GIT_OPT_SET_EXTENSIONS`. Extensions that have been negated | |
446 | * > will not be returned. The returned list should be released | |
447 | * > with `git_strarray_dispose`. | |
448 | * | |
449 | * opts(GIT_OPT_SET_EXTENSIONS, const char **extensions, size_t len) | |
450 | * > Set that the given git extensions are supported by the caller. | |
451 | * > Extensions supported by libgit2 may be negated by prefixing | |
452 | * > them with a `!`. For example: setting extensions to | |
453 | * > { "!noop", "newext" } indicates that the caller does not want | |
454 | * > to support repositories with the `noop` extension but does want | |
455 | * > to support repositories with the `newext` extension. | |
456 | * | |
e579e0f7 MB |
457 | * opts(GIT_OPT_GET_OWNER_VALIDATION, int *enabled) |
458 | * > Gets the owner validation setting for repository | |
459 | * > directories. | |
460 | * | |
461 | * opts(GIT_OPT_SET_OWNER_VALIDATION, int enabled) | |
462 | * > Set that repository directories should be owned by the current | |
463 | * > user. The default is to validate ownership. | |
464 | * | |
5540d947 RB |
465 | * @param option Option key |
466 | * @param ... value to set the option | |
467 | * @return 0 on success, <0 on failure | |
59853eff | 468 | */ |
5540d947 | 469 | GIT_EXTERN(int) git_libgit2_opts(int option, ...); |
59853eff | 470 | |
c15648cb SP |
471 | /** @} */ |
472 | GIT_END_DECL | |
b46708aa | 473 | |
c15648cb | 474 | #endif |