summaryrefslogtreecommitdiff
path: root/include/git2/sys
Commit message (Collapse)AuthorAgeFilesLines
* odb: provide a free function for custom backendsethomson/odb_backend_allocationsEdward Thomson2019-02-231-0/+11
| | | | | | | | | | | | Custom backends can allocate memory when reading objects and providing them to libgit2. However, if an error occurs in the custom backend after the memory has been allocated for the custom object but before it's returned to libgit2, the custom backend has no way to free that memory and it must be leaked. Provide a free function that corresponds to the alloc function so that custom backends have an opportunity to free memory before they return an error.
* odb: rename git_odb_backend_malloc for consistencyEdward Thomson2019-02-231-2/+35
| | | | | | | | | | | | The `git_odb_backend_malloc` name is a system function that is provided for custom ODB backends and allows them to allocate memory for an ODB object in the read callback. This is important so that libgit2 can later free the memory used by an ODB object that was read from the custom backend. However, the name _suggests_ that it actually allocates a `git_odb_backend`. It does not; rename it to make it clear that it actually allocates backend _data_.
* indexer: use git_indexer_progress throughoutEdward Thomson2019-02-222-3/+3
| | | | | Update internal usage of `git_transfer_progress` to `git_indexer_progreses`.
* Remove `git_time_monotonic`remove_time_monotonicEdward Thomson2019-02-171-31/+0
| | | | | | | | | | `git_time_monotonic` was added so that non-native bindings like rugged could get high-resolution timing for benchmarking. However, this is outside the scope of libgit2 *and* rugged decided not to use this function in the first place. Google suggests that absolutely _nobody_ is using this function and we don't want to be in the benchmarking business. Remove the function.
* docs: minor changesEtienne Samson2019-01-301-12/+21
|
* transport: enhance documentationEtienne Samson2019-01-281-57/+88
|
* deprecation: deprecated stream registration in if guardEdward Thomson2019-01-251-6/+15
| | | | | | | | `git_stream_register_tls` is now deprecated; mark it in an if guard with the deprecation. This should not be included in `deprecated.h` since it is an uncommonly used `sys` header file.
* Introduce GIT_CALLBACK macro to enforce cdeclEdward Thomson2019-01-179-93/+93
| | | | | | | | | Since we now always build the library with cdecl calling conventions, our callbacks should be decorated as such so that users will not be able to provide callbacks defined with other calling conventions. The `GIT_CALLBACK` macro will inject the `__cdecl` attribute as appropriate.
* object_type: update public API to use git_object_tEdward Thomson2018-12-011-6/+6
| | | | | | git_object_t is the future; update the public API to use it. This will also ensure that we can build our tests which make use of the old API without modification (and without compiler warnings).
* stream registration: take an enum typeEdward Thomson2018-11-281-3/+15
| | | | | | Accept an enum (`git_stream_t`) during custom stream registration that indicates whether the registration structure should be used for standard (non-TLS) streams or TLS streams.
* stream: provide generic registration APIEdward Thomson2018-11-281-9/+38
| | | | | | | | | Update the new stream registration API to be `git_stream_register` which takes a registration structure and a TLS boolean. This allows callers to register non-TLS streams as well as TLS streams. Provide `git_stream_register_tls` that takes just the init callback for backward compatibliity.
* tls: introduce a wrap functionEdward Thomson2018-11-281-6/+36
| | | | | | | | | | | Introduce `git_tls_stream_wrap` which will take an existing `stream` with an already connected socket and begin speaking TLS on top of it. This is useful if you've built a connection to a proxy server and you wish to begin CONNECT over it to tunnel a TLS connection. Also update the pluggable TLS stream layer so that it can accept a registration structure that provides an `init` and `wrap` function, instead of a single initialization function.
* transport: see if cert/cred callbacks exist before calling themEdward Thomson2018-11-151-2/+8
| | | | | | | Custom transports may want to ask libgit2 to invoke a configured credential or certificate callback; however they likely do not know if a callback was actually configured. Return a sentinal value (GIT_PASSTHROUGH) if there is no callback configured instead of crashing.
* path: export the dotgit-checking functionscmn/expose-gitfile-checkCarlos Martín Nieto2018-10-151-0/+64
| | | | | | | | These checks are preformed by libgit2 on checkout, but they're also useful for performing checks in applications which do not involve checkout. Expose them under `sys/` as it's still fairly in the weeds even for this library.
* settings: allow swapping out memory allocatorPatrick Steinhardt2018-06-071-0/+24
| | | | | | | Tie in the newly created infrastructure for swapping out memory allocators into our settings code. A user can now simply use the new option "GIT_OPT_SET_ALLOCATOR" with `git_libgit2_opts`, passing in an already initialized allocator structure as vararg.
* alloc: make memory allocators use function pointersPatrick Steinhardt2018-06-071-0/+77
| | | | | | | | | | | | | | | | | Currently, our memory allocators are being redirected to the correct implementation at compile time by simply using macros. In order to make them swappable at runtime, this commit reshuffles that by instead making use of a global "git_allocator" structure, whose pointers are set up to reference the allocator functions. Like this, it becomes easy to swap out allocators by simply setting these function pointers. In order to initialize a "git_allocator", our provided allocators "stdalloc" and "crtdbg" both provide an init function. This is being called to initialize a passed in allocator struct and set up its members correctly. No support is yet included to enable users of libgit2 to switch out the memory allocator at a global level.
* docs: correct defgroupEtienne Samson2018-05-071-1/+1
|
* docs: fix incorrect codeblock on outputEtienne Samson2018-05-071-35/+35
|
* docs: fix more missing includesEtienne Samson2018-05-072-0/+8
|
* odb: provide length and type with streaming readEdward Thomson2018-02-011-1/+2
| | | | | The streaming read functionality should provide the length and the type of the object, like the normal read functionality does.
* odb: export mempack backendAdrián Medraño Calvo2018-01-221-4/+5
| | | | Fixes #4492, #4496.
* config: pass repository when opening config filesPatrick Steinhardt2017-10-091-1/+4
| | | | | | | | | | | | | | | | | Our current configuration logic is completely oblivious of any repository, but only cares for actual file paths. Unfortunately, we are forced to break this assumption by the introduction of conditional includes, which are evaluated in the context of a repository. Right now, only one conditional exists with "gitdir:" -- it will only include the configuration if the current repository's git directory matches the value passed to "gitdir:". To support these conditionals, we have to break our API and make the repository available when opening a configuration file. This commit extends the `open` call of configuration backends to include another repository and adjusts existing code to have it available. This includes the user-visible functions `git_config_add_file_ondisk` and `git_config_add_backend`.
* Remove unused 'sys/remote.h' headerethomson/remove_sys_remote_hEdward Thomson2017-07-311-16/+0
|
* Adding git_filter_init for initializing `git_filter` struct + unit test Mohseen Mukaddam2017-06-131-0/+11
|
* adding GIT_FILTER_VERSION to GIT_FILTER_INIT as part of conventionMohseen Mukaddam2017-06-131-1/+1
|
* transport: provide a getter for the proxy optionscmn/transport-get-proxyCarlos Martín Nieto2017-04-171-0/+10
| | | | | | | | As with the callbacks, third-party implementations of smart subtransports cannot reach into the opaque struct and thus cannot know what options the user set. Add a getter for these options to copy the proxy options into something external implementors can use.
* merge_driver: fix const-correctness for source gettersPatrick Steinhardt2017-03-151-5/+5
|
* Allow for caching of submodules.Brock Peabody2017-01-201-0/+29
| | | | | | | | | | | | | | Added `git_repository_submodule_cache_all` to initialze a cache of submodules on the repository so that operations looking up N submodules are O(N) and not O(N^2). Added a `git_repository_submodule_cache_clear` function to remove the cache. Also optimized the function that loads all submodules as it was itself O(N^2) w.r.t the number of submodules, having to loop through the `.gitmodules` file once per submodule. I changed it to process the `.gitmodules` file once, into a map. Signed-off-by: David Turner <dturner@twosigma.com>
* time: Export `git_time_monotonic`vmg/timeVicent Marti2016-09-131-0/+31
|
* odb: freshen existing objects when writingEdward Thomson2016-08-041-0/+11
| | | | | | When writing an object, we calculate its OID and see if it exists in the object database. If it does, we need to freshen the file that contains it.
* proxy: add a payload field for the proxy optionsCarlos Martín Nieto2016-04-191-0/+16
| | | | | I don't quite recall what we do in the other places where we use this, but we should pass this payload to the callbacks.
* net: use proxy options struct in the stream configCarlos Martín Nieto2016-04-191-1/+2
|
* proxy: ask the user for credentials if necessaryCarlos Martín Nieto2016-04-191-1/+3
|
* merge driver: remove `check` callbackEdward Thomson2016-03-171-62/+6
| | | | | | Since the `apply` callback can defer, the `check` callback is not necessary. Removing the `check` callback further makes the `payload` unnecessary along with the `cleanup` callback.
* merge driver: improve inline documentationEdward Thomson2016-03-171-18/+21
|
* merge driver: introduce custom merge driversEdward Thomson2016-03-171-0/+230
| | | | | | | | Consumers can now register custom merged drivers with `git_merge_driver_register`. This allows consumers to support the merge drivers, as configured in `.gitattributes`. Consumers will be asked to perform the file-level merge when a custom driver is configured.
* index: fix contradicting comparisonPatrick Steinhardt2016-02-231-1/+1
| | | | | | | | | | | | | | | | | | The overflow check in `read_reuc` tries to verify if the `git__strtol32` parses an integer bigger than UINT_MAX. The `tmp` variable is casted to an unsigned int for this and then checked for being greater than UINT_MAX, which obviously can never be true. Fix this by instead fixing the `mode` field's size in `struct git_index_reuc_entry` to `uint32_t`. We can now parse the int with `git__strtol64`, which can never return a value bigger than `UINT32_MAX`, and additionally checking if the returned value is smaller than zero. We do not need to handle overflows explicitly here, as `git__strtol64` returns an error when the returned value would overflow.
* filter: clean up documentation around custom filtersEdward Thomson2016-02-091-25/+34
|
* stream: allow registering a user-provided TLS constructorcmn/tls-registerCarlos Martín Nieto2015-11-031-0/+13
| | | | | This allows the application to use their own TLS stream, regardless of the capabilities of libgit2 itself.
* Fix build for custom transport usersLeo Yang2015-10-301-0/+1
| | | | | We should explicitly include the declaration of git_strarray from "include/git2/sys/transport.h"
* refdb and odb backends must provide `free` functionArthur Schreiber2015-10-012-2/+6
| | | | | | | | | As refdb and odb backends can be allocated by client code, libgit2 can’t know whether an alternative memory allocator was used, and thus should not try to call `git__free` on those objects. Instead, odb and refdb backend implementations must always provide their own `free` functions to ensure memory gets freed correctly.
* Tell the git_transport about the custom_headersMatt Burke2015-09-081-0/+5
|
* transport: provide a way to get the callbacksCarlos Martín Nieto2015-08-191-0/+22
| | | | | | | | libgit2 implementations of smart subtransports can simply reach through the structure, but external implementors cannot. Add these two functions as a way for the smart subtransports to get the callbacks as set by the user.
* config: implement basic transactional supportCarlos Martín Nieto2015-08-121-0/+14
| | | | | | | When a configuration file is locked, any updates made to it will be done to the in-memory copy of the file. This allows for multiple updates to happen while we hold the lock, preventing races during complex config-file manipulation.
* Merge pull request #3332 from phatblat/ben/doc-warningsCarlos Martín Nieto2015-08-014-7/+7
|\ | | | | Resolve documentation warnings
| * Fix remaining documentation warningsBen Chatelain2015-07-272-2/+2
| |
| * Use correct Doxygen trailing comment syntaxBen Chatelain2015-07-271-4/+4
| |
| * Fix @param names in doc commentsBen Chatelain2015-07-272-2/+2
| |
* | refdb: delete a ref's reflog upon deletioncmn/reflog-del-backendCarlos Martín Nieto2015-07-121-2/+3
|/ | | | | | Removing a reflog upon ref deletion is something which only some backends might wish to do. Backends which are database-backed may wish to archive a reflog, log-based ones may not need to do anything.
* filters: custom filters with wildcard attributesEdward Thomson2015-07-011-1/+4
| | | | | | Allow custom filters with wildcard attributes, so that clients can support some random `filter=foo` in a .gitattributes and look up the corresponding smudge/clean commands in the configuration file.