include/git2


Log

Author Commit Date CI Message
Edward Thomson 74ffce20 2021-12-11T12:00:26 oid: introduce `git_oid_t` We require an enumeration to help us identify the different types of object IDs. Currently, we only support SHA1 but we will support SHA256 in the future.
Edward Thomson dbc4ac1c 2022-01-22T23:10:03 oid: `GIT_OID_*SZ` is now `GIT_OID_SHA1_*SIZE` In preparation for SHA256 support, `GIT_OID_RAWSZ` and `GIT_OID_HEXSZ` need to indicate that they're the size of _SHA1_ OIDs.
Edward Thomson 0acaf3a8 2022-01-17T13:40:37 oid: define GIT_OID_SHA1_ZERO Callers should not assume the layout of the oid structure; provide them a macro that defines the null / zero sha1 object id.
Edward Thomson fb68f180 2022-06-13T21:44:05 status: update documentation for default options
Edward Thomson 1ed1e19a 2022-06-13T21:23:42 config: update config entry iteration lifecycle
Edward Thomson cc4c37ca 2022-06-12T10:50:43 transport: remove `git_transport_smart_proxy_options` Snuck in during refactoring; let's get rid of it.
lhchavez 0a7c00be 2022-06-11T14:31:16 Merge remote-tracking branch 'origin/main' into main
lhchavez a7541676 2022-06-11T14:29:15 Apply suggestions from code review Co-authored-by: Edward Thomson <ethomson@github.com>
Aleksey Kulikov 9af5db9a 2022-04-28T17:06:54 docs: fix couple of typos
Edward Thomson a1c94e94 2022-04-25T09:15:59 Merge pull request #6277 from cschlack/sys_transport_missing_include Fix missing include
lhchavez 1d88605c 2022-04-16T08:19:38 transport: introduce `git_transport_smart_remote_connect_options` 6fc6eeb66c40310086c8f059cae41de69ad4c6da removed `git_transport_smart_proxy_option`, and there was nothing added to replace it. That made it hard for custom transports / smart subtransports to know what remote connect options to use (e.g. proxy options). This change introduces `git_transport_smart_remote_connect_options` to replace it.
Christian Schlack a6fb41ff 2022-04-16T14:56:23 Fix missing include
lhchavez 88f24384 2022-04-14T07:18:06 remote: Delete a now-inexistent API declaration 6fc6eeb66c40310086c8f059cae41de69ad4c6da replaced the remote options with `git_remote_connect_options`. The function definitions were removed, but one function declaration remained, causing linker errors if one tried to use it. This change removes the declaration of `git_transport_smart_proxy_option` to better reflect reality.
Edward Thomson 4161ebdd 2022-04-11T21:31:25 repo: make ownership checks optional Introduce the `GIT_OPT_SET_OWNER_VALIDATION` option, so that users can disable repository ownership validation.
Edward Thomson c0dfd1ad 2022-04-11T09:56:26 repo: ensure that repo dir is owned by current user Ensure that the repository directory is owned by the current user; this prevents us from opening configuration files that may have been created by an attacker.
Edward Thomson 36df49c2 2021-12-12T14:29:11 sha: GIT_ERROR_SHA1 is deprecated in favor of GIT_ERROR_SHA The more generic GIT_ERROR_SHA allows for SHA256 errors as well as SHA1.
Edward Thomson 49e180c8 2022-02-15T22:55:48 errors: expose `git_error_set` The `git_error_set` function is useful for callers who implement backends and advanced callbacks. Expose it.
Edward Thomson b152b030 2022-02-14T10:27:48 meta: document version information for libgit2
Edward Thomson 056fe4be 2022-02-14T07:12:36 meta: provide an accessor for prerelease info
Edward Thomson ae74d5ac 2022-02-14T07:01:43 meta: update version number to v1.5.0-alpha Update the version number in main to v1.5.0-alpha. This helps people understand that the main builds are not part of the v1.4.0 release train. We use "alpha" to indicate builds out of main (or nightlies) as semver v2 requires the prerelease component is compared lexicographically. Thus, our "beta" and "rc" releases should follow.
Edward Thomson 5c949d1f 2022-02-13T10:06:15 v1.4: update version numbers
Edward Thomson aded938e 2022-02-12T21:23:01 Merge pull request #6204 from boretrk/merge_flags merge: fix overlap between GIT_MERGE_FILE_FAVOR__CONFLICTED and GIT_MERGE_FILE_SIMPLIFY_ALNUM
Edward Thomson 0fbf62cd 2022-02-12T08:46:55 merge: make the internal flags public We made the flags that enable recursive merge internal, on the assumption that nobody would want them and they're hard to reason about. (Giving people an option that nobody wants is just extra noise.) However, it made it hard for _us_ to reason about. There's no good reason to keep it private, let's just make it public and push that cognitive load onto our poor users. But they should expect it, they're dealing with git, after all.
Edward Thomson 359240b6 2022-02-11T17:56:05 diff: indicate when the file size is "valid" When we know the file size (because we're producing it from a working directory iterator, or an index with an up-to-date cache) then set a flag indicating as such. This removes the ambiguity about a 0 file size, which could indicate that a file exists and is 0 bytes, or that we haven't read it yet.
Edward Thomson 1d811f0e 2022-02-11T07:14:54 Merge pull request #6203 from libgit2/ethomson/fetch_by_oid Fetch by object id
Peter Pettersson fed3fef4 2022-02-07T00:45:44 merge: allocate merge flags for internal use Allocate flags in git_merge_flag_t and git_merge_file_flag_t for internal usage to prevent accidental double allocation.
Edward Thomson d9863fc1 2022-02-06T15:27:34 Merge pull request #6192 from libgit2/ethomson/sha256_preparation SHA256: early preparation
Edward Thomson 37d98aaf 2022-02-06T14:59:24 transport: transports can indicate support for fetch by oid
Edward Thomson 923c1652 2022-02-06T09:36:51 transport: add capabilities query function
Edward Thomson c629d2a1 2022-01-29T21:02:15 merge: support zdiff3 conflict styles
Edward Thomson 70d9bfa4 2022-01-22T17:34:36 packbuilder: use the packfile name instead of hash Deprecate the `git_packfile_hash` function. Callers should use the new `git_packfile_name` function which provides a unique packfile name.
Edward Thomson d2458af7 2022-01-22T14:19:13 indexer: use a byte array for checksum The index's checksum is not an object ID, so we should not use the `git_oid` type. Use a byte array for checksum calculation and storage. Deprecate the `git_indexer_hash` function. Callers should use the new `git_indexer_name` function which provides a unique packfile name.
Edward Thomson 11ef76a9 2022-01-22T13:31:02 index: use a byte array for checksum The index's checksum is not an object ID, so we should not use the `git_oid` type. Use a byte array for checksum calculation and storage. Deprecate the `git_index_checksum` function without a replacement. This is an abstraction that callers should not care about (and indeed do not seem to be using). Remove the unused `git_index__changed_relative_to` function.
Edward Thomson 258df9c1 2022-01-17T22:03:26 Merge pull request #6168 from punkymaniac/patch-documentation-2 Improve documentation
Edward Thomson 616628dd 2022-01-17T21:39:35 Merge branch 'main' into typos
Edward Thomson d4232e7c 2022-01-17T21:21:54 Apply suggestions from code review
Edward Thomson 515daeaf 2022-01-04T06:16:30 remote: introduce `follow_redirects` connect option Give callers the ability to select how to handle redirects - either supporting redirects during the initial connection (so that, for example, `git.example.com/repo` can redirect to `github.com/example/repo`) or all/no redirects. This is for compatibility with git.
punkymaniac 7491b3fd 2022-01-12T09:38:09 Set parameter name as function declaration
punkymaniac 4e93ecfa 2022-01-11T15:06:00 Separate function description from short description
punkymaniac 5c8f7a99 2022-01-09T10:41:24 Rephrase param description
punkymaniac c6ede676 2022-01-09T10:35:42 Fix misspelling word "ge" -> "get"
punkymaniac 58ae4535 2022-01-09T10:29:00 Document return value for git_libgit2_features
punkymaniac 68bc511a 2021-11-26T15:14:56 Add documentation about parameter and return value
punkymaniac 03aed8bc 2021-11-26T14:57:41 Add missing parameter name
punkymaniac f8b26df3 2021-11-26T12:50:40 Add `git_apply_options_init` documentation
Edward Thomson 6fc6eeb6 2021-12-24T15:14:38 remote: introduce `git_remote_connect_options` The existing mechanism for providing options to remote fetch/push calls, and subsequently to transports, is unsatisfactory. It requires an options structure to avoid breaking the API and callback signatures. 1. Introduce `git_remote_connect_options` to satisfy those needs. 2. Add a new remote connection API, `git_remote_connect_ext` that will take this new options structure. Existing `git_remote_connect` calls will proxy to that. `git_remote_fetch` and `git_remote_push` will proxy their fetch/push options to that as well. 3. Define the interaction between `git_remote_connect` and fetch/push. Connect _may_ be called before fetch/push, but _need not_ be. The semantics of which options would be used for these operations was not specified if you specify options for both connect _and_ fetch. Now these are defined that the fetch or push options will be used _if_ they were specified. Otherwise, the connect options will be used if they were specified. Otherwise, the library's defaults will be used. 4. Update the transports to understand `git_remote_connect_options`. This is a breaking change to the systems API.
Dimitris Apostolou 90df4302 2022-01-05T12:18:05 Fix typos
Miguel Arroz ef848891 2021-12-31T16:40:58 Add `rename_threshold` to `git_status_options`.
Edward Thomson 942cfac1 2021-12-23T14:21:23 worktree: checkout options suggestions from code review
punkymaniac ffead012 2021-09-09T18:02:22 Allow user checkout options on git_worktree_add Extend the `git_worktree_add_options` to include `git_checkout_options`. github issue #5949
Edward Thomson 4591e76a 2021-12-10T15:19:59 blob: identify binary content Introduce `git_blob_data_is_binary` to examine a blob's data, instead of the blob itself. A replacement for `git_buf_is_binary`.
Edward Thomson 9f03ebd1 2021-11-29T13:44:42 object: introduce a raw content validation function Users may want to validate raw object content; provide them a function to do so.
Edward Thomson fc1a3f45 2021-11-29T13:36:36 object: return GIT_EINVALID on parse errors Return `GIT_EINVALID` on parse errors so that direct callers of parse functions can determine when there was a failure to parse the object. The object parser functions will swallow this error code to prevent it from propagating down the chain to end-users. (`git_merge` should not return `GIT_EINVALID` when a commit it tries to look up is not valid, this would be too vague to be useful.) The only public function that this affects is `git_signature_from_buffer`, which is now documented as returning `GIT_EINVALID` when appropriate.
Peter Pettersson 38c34498 2021-10-03T00:12:52 Make enum in includes C90 compliant by removing trailing comma.
Josh Triplett f45ff6c9 2021-11-08T17:33:35 Omit trailing comma on enum To accommodate less capable compilers. Co-authored-by: Peter Pettersson <85582231+boretrk@users.noreply.github.com>
Josh Triplett 81662d43 2021-11-08T14:48:45 Support checking for object existence without refresh Looking up a non-existent object currently always invokes `git_odb_refresh`. If looking up a large batch of objects, many of which may legitimately not exist, this will repeatedly refresh the ODB to no avail. Add a `git_odb_exists_ext` that accepts flags controlling the ODB lookup, and add a flag to suppress the refresh. This allows the user to control if and when they refresh (for instance, refreshing once before starting the batch).
Josh Triplett 3993e9ae 2021-11-08T14:00:09 Update documentation for ODB backend refresh logic Commit b1a6c316a6070fac4ab1ec5792979838f7145c39 moved auto-refresh into the pack backend, and added a comment accordingly. Commit 43820f204ea32503b4083e3b6b83f30a0a0031c9 moved auto-refresh back *out* of backends into the ODB layer, but didn't update the comment.
Edward Thomson f0e693b1 2021-09-07T17:53:49 str: introduce `git_str` for internal, `git_buf` is external libgit2 has two distinct requirements that were previously solved by `git_buf`. We require: 1. A general purpose string class that provides a number of utility APIs for manipulating data (eg, concatenating, truncating, etc). 2. A structure that we can use to return strings to callers that they can take ownership of. By using a single class (`git_buf`) for both of these purposes, we have confused the API to the point that refactorings are difficult and reasoning about correctness is also difficult. Move the utility class `git_buf` to be called `git_str`: this represents its general purpose, as an internal string buffer class. The name also is an homage to Junio Hamano ("gitstr"). The public API remains `git_buf`, and has a much smaller footprint. It is generally only used as an "out" param with strict requirements that follow the documentation. (Exceptions exist for some legacy APIs to avoid breaking callers unnecessarily.) Utility functions exist to convert a user-specified `git_buf` to a `git_str` so that we can call internal functions, then converting it back again.
Edward Thomson 1738f732 2021-10-13T11:36:07 diff: document updated rename limit
Edward Thomson 8c29885e 2021-09-27T08:57:03 Merge pull request #6076 from libgit2/ethomson/oidarray_dispose oidarray: introduce `git_oidarray_dispose`
Edward Thomson 0bd132ab 2021-09-26T17:58:08 oidarray: introduce `git_oidarray_dispose` Since users are disposing the _contents_ of the oidarray, not freeing the oidarray itself, the proper cleanup function is `git_oidarray_dispose`. Deprecate `git_oidarray_free`.
Edward Thomson 0f4256b8 2021-09-24T15:23:34 repository: improve `hashfile` for absolute paths When `git_repository_hashfile` is handed an absolute path, it determines whether the path is within the repository's working directory or not. This is necessary when there is no `as_path` specified. If the path is within the working directory, then the given path should be used for attribute lookups (it is the effective `as_path`). If it is not within the working directory, then it is _not_ eligible. Importantly, now we will _never_ pass an absolute path down to attribute lookup functions.
Edward Thomson e7437162 2021-09-22T08:35:02 v1.3: update version number
Edward Thomson a5644b80 2021-09-22T08:48:17 Merge pull request #6068 from libgit2/ethomson/diff_enum diff: update `GIT_DIFF_IGNORE_BLANK_LINES`
Edward Thomson 1ba7c327 2021-09-21T20:23:44 diff: update `GIT_DIFF_IGNORE_BLANK_LINES` `GIT_DIFF_IGNORE_BLANK_LINES` needs to be within a (signed) int, per the `enum` definition of ISO C.
Edward Thomson 90656858 2021-09-21T11:28:39 filter: use a `git_oid` in filter options, not a pointer Using a `git_oid *` in filter options was a mistake; it is a deviation from our typical pattern, and callers in some languages that GC may need very special treatment in order to pass both an options structure and a pointer outside of it.
Edward Thomson ba01547d 2021-09-20T21:45:10 Merge pull request #6061 from libgit2/ethomson/email Introduce `git_email_create`; deprecate `git_diff_format_email`
Edward Thomson 1396a9b5 2021-09-20T12:36:56 Merge pull request #6020 from lolgear/refactoring/stdint_ifdef_condition_has_been_reverted Stdint header condition has been reverted.
Edward Thomson ba3595af 2021-09-13T16:25:00 diff: deprecate diff_format_email `git_diff_format_email` is deprecated in favor of `git_email_create`.
Edward Thomson 67b1d019 2021-09-14T09:49:31 email: include renames by default `git format-patch` includes diffs with rename detection enabled by default when creating emails. Match this behavior.
Edward Thomson 323f222f 2021-09-14T09:44:52 email: include binary diffs by default `git format-patch` includes binary diffs by default when creating emails. Match this behavior.
Edward Thomson 6aa34966 2021-09-13T08:17:21 email: introduce `git_email_create_from_diff` Introduce a function to create an email from a diff and multiple inputs about the source of the diff. Creating an email from a diff requires many more inputs, and should be discouraged in favor of building directly from a commit, and is thus in the `sys` namespace.
Edward Thomson 75d4676a 2021-09-12T17:06:14 email: introduce `git_email_create_from_commit` Create `git_email_*` which will encapsulate email creation and application, and `git_email_create_from_commit` in particular, which creates an email for a single commit.
Edward Thomson 4f24a932 2021-09-14T07:45:50 Merge pull request #6031 from libgit2/ethomson/extensions Support custom git extensions
punkymaniac 379c4646 2021-09-09T19:49:04 Fix coding style for pointer Make some syntax change to follow coding style.
lhchavez 62ee779e 2021-09-04T18:01:10 remote: Mark `git_remote_name_is_valid` as `GIT_EXTERN` This change makes `git_remote_name_is_valid` be part of the public interface of the library. This is needed for other language bindings to be able to find this symbol (like in git2go, when linking against libgit2 dynamically).
Edward Thomson a24e656a 2021-09-04T10:16:41 common: support custom repository extensions Allow users to specify additional repository extensions that they want to support. For example, callers can specify that they support `preciousObjects` and then may open repositories that support `extensions.preciousObjects`. Similarly, callers may opt out of supporting extensions that the library itself supports.
Edward Thomson c811fc36 2021-08-31T00:13:42 v1.2: update version information
Edward Thomson 98be5a11 2021-08-30T17:55:47 Merge branch 'cgraph-write' into main
Edward Thomson 34fa6311 2021-08-30T17:55:13 commit graph: formatting fixes
Dmitry Lobanov 2bd3c80e 2021-08-30T11:41:11 include: stdint header condition has been reverted.
Edward Thomson 969a056c 2021-08-29T22:54:01 Merge pull request #6017 from libgit2/ethomson/buf_is_readonly buf: deprecate public git_buf writing functions
Edward Thomson b16a36e1 2021-08-29T22:53:49 Merge pull request #6011 from libgit2/ethomson/filter_apply filter: filter drivers stop taking git_buf as user input
Edward Thomson 258115db 2021-08-29T22:53:38 Merge pull request #6016 from libgit2/ethomson/commit_create_cb Introduce `create_commit_cb`, deprecate `signing_cb`
Edward Thomson 16a2e667 2021-08-29T22:53:28 Merge pull request #6012 from libgit2/ethomson/custom_url remote: introduce remote_ready_cb, deprecate resolve_url callback
lhchavez 7d9ebdc8 2021-08-29T18:50:49 Merge remote-tracking branch 'origin/main' into cgraph-write
Edward Thomson 2998a84a 2021-08-29T21:49:33 Merge pull request #5841 from J0Nes90/features/checkout-dry-run Checkout dry-run
Edward Thomson aebdee8e 2021-08-29T21:49:26 Update include/git2/checkout.h
Edward Thomson 147b659f 2021-08-29T21:40:26 Merge pull request #5405 from lhchavez/multi-pack-index-odb-write midx: Introduce git_odb_write_multi_pack_index()
Edward Thomson 18293385 2021-08-29T21:40:16 Merge pull request #5395 from josharian/http-use-eauth Use error code GIT_EAUTH for authentication failures
Edward Thomson 9937967e 2021-08-29T21:29:14 Merge branch 'main' into http-use-eauth
Edward Thomson d2316d57 2021-08-29T13:10:44 buf: deprecate public git_buf writing functions A `git_buf` is now a read-only structure as far as callers are concerned. This is a mechanism that we can return data to callers using memory that is owned by the library and can be cleaned up by callers (using `git_buf_dispose`). A `git_buf` can no longer be allocated by callers or provided to the library.
Edward Thomson 5bcef522 2021-08-27T17:06:50 filter: deprecate apply function
Edward Thomson 7442c000 2021-08-27T11:25:51 remote: deprecate resolve_url callback Using a callback to set a resolve_url is not particularly idiomatic. Deprecate it in favor of the `set_instance_url` and `set_instance_pushurl` functions which can now be called from the `git_remote_ready_cb` callback.
Edward Thomson 72df17c6 2021-08-27T10:59:51 remote: introduce git_remote_ready_cb Introduce a new callback that fires when the remote is ready to connect.
Edward Thomson ef03e150 2021-08-29T10:14:01 rebase: deprecate signing_cb The signing callback should not be used; instead, callers should provide a commit_create_cb, perform the signing and commit creation themselves.
Edward Thomson d3bdf33b 2021-08-29T09:36:01 rebase: introduce git_commit_create_cb Introduce a new mechanism for `git_rebase_commit` for callers to customize the experience. Instead of assuming that we produce the commit for them, provide a commit creation callback that allows callers to produce the commit themselves and return the resulting commit id.
Edward Thomson a9a7bfb5 2021-05-12T22:13:12 filter: add docs for `git_filter_stream_fn`
Edward Thomson 67240677 2021-05-14T00:33:08 remote: introduce set_instance_url Users may want to override the URL on a particular instance of a remote, instead of updating the configuration. Previously, users could use a callback to do this, but this is not particularly idiomatic.
lhchavez ea285904 2020-02-18T00:02:13 midx: Introduce git_odb_write_multi_pack_index() This change introduces git_odb_write_multi_pack_index(), which creates a `multi-pack-index` file from all the `.pack` files that have been loaded in the ODB. Fixes: #5399