summaryrefslogtreecommitdiff
path: root/include
Commit message (Collapse)AuthorAgeFilesLines
* blob: identify binary contentethomson/blob_data_is_binaryEdward Thomson2021-12-101-0/+12
| | | | | Introduce `git_blob_data_is_binary` to examine a blob's data, instead of the blob itself. A replacement for `git_buf_is_binary`.
* object: introduce a raw content validation functionethomson/object_validationEdward Thomson2021-11-301-0/+22
| | | | | Users may want to validate raw object content; provide them a function to do so.
* object: return GIT_EINVALID on parse errorsEdward Thomson2021-11-301-1/+1
| | | | | | | | | | | | | | 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.
* Make enum in includes C90 compliant by removing trailing comma.Peter Pettersson2021-11-1538-72/+72
|
* Omit trailing comma on enum Josh Triplett2021-11-081-1/+1
| | | | | To accommodate less capable compilers. Co-authored-by: Peter Pettersson <85582231+boretrk@users.noreply.github.com>
* Support checking for object existence without refreshJosh Triplett2021-11-081-0/+22
| | | | | | | | | | | | 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).
* Update documentation for ODB backend refresh logicJosh Triplett2021-11-081-5/+2
| | | | | | | 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.
* str: introduce `git_str` for internal, `git_buf` is externalethomson/gitstrEdward Thomson2021-10-171-78/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* diff: document updated rename limitethomson/diff_rename_limitEdward Thomson2021-10-131-1/+1
|
* Merge pull request #6076 from libgit2/ethomson/oidarray_disposeEdward Thomson2021-09-272-8/+29
|\ | | | | oidarray: introduce `git_oidarray_dispose`
| * oidarray: introduce `git_oidarray_dispose`ethomson/oidarray_disposeEdward Thomson2021-09-262-8/+29
| | | | | | | | | | | | 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`.
* | repository: improve `hashfile` for absolute pathsEdward Thomson2021-09-251-5/+7
|/ | | | | | | | | | | | | 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.
* v1.3: update version numberethomson/v1_3Edward Thomson2021-09-221-3/+3
|
* Merge pull request #6068 from libgit2/ethomson/diff_enumEdward Thomson2021-09-221-4/+3
|\ | | | | diff: update `GIT_DIFF_IGNORE_BLANK_LINES`
| * diff: update `GIT_DIFF_IGNORE_BLANK_LINES`ethomson/diff_enumEdward Thomson2021-09-211-4/+3
| | | | | | | | | | `GIT_DIFF_IGNORE_BLANK_LINES` needs to be within a (signed) int, per the `enum` definition of ISO C.
* | filter: use a `git_oid` in filter options, not a pointerethomson/filter_commit_idEdward Thomson2021-09-213-3/+21
|/ | | | | | | 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.
* Merge pull request #6061 from libgit2/ethomson/emailEdward Thomson2021-09-205-93/+269
|\ | | | | Introduce `git_email_create`; deprecate `git_diff_format_email`
| * diff: deprecate diff_format_emailethomson/emailEdward Thomson2021-09-182-93/+96
| | | | | | | | `git_diff_format_email` is deprecated in favor of `git_email_create`.
| * email: include renames by defaultEdward Thomson2021-09-181-2/+10
| | | | | | | | | | `git format-patch` includes diffs with rename detection enabled by default when creating emails. Match this behavior.
| * email: include binary diffs by defaultEdward Thomson2021-09-181-5/+9
| | | | | | | | | | `git format-patch` includes binary diffs by default when creating emails. Match this behavior.
| * email: introduce `git_email_create_from_diff`Edward Thomson2021-09-182-13/+67
| | | | | | | | | | | | | | | | | | 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.
| * email: introduce `git_email_create_from_commit`Edward Thomson2021-09-182-0/+107
| | | | | | | | | | | | 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.
* | Merge pull request #6020 from ↵Edward Thomson2021-09-201-3/+3
|\ \ | |/ |/| | | | | lolgear/refactoring/stdint_ifdef_condition_has_been_reverted Stdint header condition has been reverted.
| * include: stdint header condition has been reverted.Dmitry Lobanov2021-08-301-3/+3
| |
* | Merge pull request #6031 from libgit2/ethomson/extensionsEdward Thomson2021-09-141-1/+19
|\ \ | | | | | | Support custom git extensions
| * | common: support custom repository extensionsethomson/extensionsEdward Thomson2021-09-041-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | Fix coding style for pointerpunkymaniac2021-09-095-12/+12
| | | | | | | | | | | | Make some syntax change to follow coding style.
* | | remote: Mark `git_remote_name_is_valid` as `GIT_EXTERN`lhchavez2021-09-041-1/+1
|/ / | | | | | | | | | | | | 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).
* | v1.2: update version informationEdward Thomson2021-08-311-3/+3
| |
* | Merge branch 'cgraph-write' into mainEdward Thomson2021-08-302-1/+133
|\ \ | |/ |/|
| * commit graph: formatting fixesEdward Thomson2021-08-301-3/+2
| |
| * Merge remote-tracking branch 'origin/main' into cgraph-writelhchavez2021-08-296-8/+112
| |\
| * \ Merge remote-tracking branch 'origin/main' into cgraph-writelhchavez2021-08-2611-137/+441
| |\ \
| * | | Make the defaultable fields defaultablelhchavez2021-08-261-2/+2
| | | | | | | | | | | | | | | | Also, add `git_commit_graph_writer_options_init`!
| * | | commit-graph: Add a way to write commit-graph fileslhchavez2021-07-272-1/+134
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds the git_commit_graph_writer_* functions to allow to write and create `commit-graph` files from `.idx`/`.pack` files or `git_revwalk`s. Part of: #5757
* | | | Merge pull request #6017 from libgit2/ethomson/buf_is_readonlyEdward Thomson2021-08-291-0/+55
|\ \ \ \ | | | | | | | | | | buf: deprecate public git_buf writing functions
| * | | | buf: deprecate public git_buf writing functionsethomson/buf_is_readonlyEdward Thomson2021-08-291-0/+55
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | Merge pull request #6011 from libgit2/ethomson/filter_applyEdward Thomson2021-08-291-28/+49
|\ \ \ \ | | | | | | | | | | filter: filter drivers stop taking git_buf as user input
| * | | | filter: deprecate apply functionethomson/filter_applyEdward Thomson2021-08-291-0/+8
| | | | |
| * | | | filter: add docs for `git_filter_stream_fn`Edward Thomson2021-08-271-28/+41
| |/ / /
* | | | Merge pull request #6016 from libgit2/ethomson/commit_create_cbEdward Thomson2021-08-293-20/+81
|\ \ \ \ | | | | | | | | | | Introduce `create_commit_cb`, deprecate `signing_cb`
| * | | | rebase: deprecate signing_cbethomson/commit_create_cbEdward Thomson2021-08-293-22/+31
| | | | | | | | | | | | | | | | | | | | | | | | | The signing callback should not be used; instead, callers should provide a commit_create_cb, perform the signing and commit creation themselves.
| * | | | rebase: introduce git_commit_create_cbEdward Thomson2021-08-292-0/+52
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | Merge pull request #6012 from libgit2/ethomson/custom_urlEdward Thomson2021-08-291-3/+52
|\ \ \ \ | |_|_|/ |/| | | remote: introduce remote_ready_cb, deprecate resolve_url callback
| * | | remote: deprecate resolve_url callbackethomson/custom_urlEdward Thomson2021-08-291-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | remote: introduce git_remote_ready_cbEdward Thomson2021-08-291-0/+17
| | | | | | | | | | | | | | | | Introduce a new callback that fires when the remote is ready to connect.
| * | | remote: introduce set_instance_urlEdward Thomson2021-08-271-3/+25
| |/ / | | | | | | | | | | | | | | | 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.
* | | Merge pull request #5841 from J0Nes90/features/checkout-dry-runEdward Thomson2021-08-291-0/+6
|\ \ \ | | | | | | | | Checkout dry-run
| * | | Update include/git2/checkout.hEdward Thomson2021-08-291-1/+4
| | | |
| * | | implement GIT_CHECKOUT_DRY_RUN to allow notifications without touching the ↵Jochen Hunz2021-04-141-0/+3
| | | | | | | | | | | | | | | | working directory