summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* str: introduce `git_str` for internal, `git_buf` is externalethomson/gitstrEdward Thomson2021-10-17346-6308/+6759
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* docs: document `git_buf`Edward Thomson2021-10-171-0/+63
| | | | | | | | | | | | | | | We have been inconsistent about the way that we handle `git_buf`s provided by users. _Usually_ we require that it has been properly initialized with `GIT_BUF_INIT`, but _sometimes_ we simply overwrite the data in it regardless. And even more rarely, we will grow a user-provided buffer and concatenate data onto it (see `git_diff_format_email`). Document the path forward for `git_buf`, which is that we always require that the buffer is intitialized with `GIT_BUF_INIT`. `git_diff_format_email` will be kept backward compatible but users are encouraged to switch to the new `git_email` APIs.
* Merge pull request #6082 from libgit2/ethomson/oidEdward Thomson2021-10-1728-114/+143
|\ | | | | hash: separate hashes and git_oid
| * fuzzers: use updated hash functionsethomson/oidEdward Thomson2021-10-022-6/+12
| |
| * futils: use a particular hash not a git_oidEdward Thomson2021-10-022-7/+13
| | | | | | | | | | | | In `git_futils_readbuffer_updated`, always take a particular hash instead of a `git_oid`. This lets us change the checksum algorithm independently of `git_oid` usage.
| * hash: hash functions operate on byte arrays not git_oidsEdward Thomson2021-10-0224-51/+52
| | | | | | | | | | | | Separate the concerns of the hash functions from the git_oid functions. The git_oid structure will need to understand either SHA1 or SHA256; the hash functions should only deal with the appropriate one of these.
| * hash: accept the algorithm in inputsEdward Thomson2021-10-0118-57/+73
| |
| * hash: don't abbreviate algorithmEdward Thomson2021-10-012-13/+13
| |
* | Merge pull request #6092 from libgit2/ethomson/diff_rename_limitEdward Thomson2021-10-132-2/+2
|\ \ | |/ |/|
| * diff: document updated rename limitethomson/diff_rename_limitEdward Thomson2021-10-131-1/+1
| |
| * diff: make the default rename_limit 1000Edward Thomson2021-10-131-1/+1
|/ | | git's default rename limit is 1000, ours should match.
* v1.3: very very last-minute changelog updatesv1.3.0Edward Thomson2021-09-271-0/+2
|
* Merge pull request #6071 from 257/examplesEdward Thomson2021-09-271-0/+9
|\ | | | | examples: Free the git_config and git_config_entry after use
| * examples: Free the git_config and git_config_entry after usePaymon MARANDI2021-09-241-0/+9
| |
* | v1.3: changelog updates for last-minute changesEdward Thomson2021-09-271-1/+8
| |
* | Merge pull request #6076 from libgit2/ethomson/oidarray_disposeEdward Thomson2021-09-275-47/+77
|\ \ | | | | | | oidarray: introduce `git_oidarray_dispose`
| * | oidarray: introduce `git_oidarray_dispose`ethomson/oidarray_disposeEdward Thomson2021-09-265-47/+77
| |/ | | | | | | | | | | 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`.
* | Merge pull request #6075 from libgit2/ethomson/attr_longpathsEdward Thomson2021-09-275-12/+9
|\ \
| * | attr_file: don't take the `repo` as an argethomson/attr_longpathsEdward Thomson2021-09-265-10/+8
| | | | | | | | | | | | The `repo` argument is now unnecessary. Remove it.
| * | attr_file: don't validate workdir paths in attr lookupsEdward Thomson2021-09-261-2/+1
| |/ | | | | | | | | | | | | | | | | | | When looking up attributes for a file, we construct an absolute path to the queried file within the working directory so that we can accept both absolute paths and working directory relative paths. We then trim the leading working directory path to give us an in-repo path. Since we only want the in-repo path to look up attributes - and not to read it from disk - we don't need to validate its length.
* | Merge pull request #6073 from libgit2/ethomson/attr_lookupsEdward Thomson2021-09-277-29/+123
|\ \
| * | attr: ensure lookups are on repo-relative pathsethomson/attr_lookupsEdward Thomson2021-09-251-0/+2
| | | | | | | | | | | | | | | Attribute lookups are done on paths relative to the repository. Fail if erroneously presented with an absolute path.
| * | checkout: always provide a path for attribute lookupEdward Thomson2021-09-251-7/+6
| | | | | | | | | | | | | | | Always pass a working-directory relative path to attribute lookups during checkout.
| * | blob: improve `create_from_disk` attribute lookupsEdward Thomson2021-09-251-5/+4
| | | | | | | | | | | | | | | | | | Resolve absolute paths to be working directory relative when looking up attributes. Importantly, now we will _never_ pass an absolute path down to attribute lookup functions.
| * | repository: improve `hashfile` for absolute pathsEdward Thomson2021-09-253-17/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | win32: posixify the output of p_getcwdEdward Thomson2021-09-251-0/+3
| |/ | | | | | | | | | | | | Make p_getcwd match the rest of our win32 path handling semantics. (This is currently only used in tests, which is why this disparity went unnoticed.)
* | Merge pull request #6077 from libgit2/ethomson/strarrayEdward Thomson2021-09-264-30/+16
|\ \ | |/ |/| buf: common_prefix takes a string array
| * buf: common_prefix takes a string arrayethomson/strarrayEdward Thomson2021-09-264-30/+16
|/ | | | | | `git_strarray` is a public-facing type. Change `git_buf_text_common_prefix` to not use it, and just take an array of strings instead.
* changelog: separate releases with a horizontal ruleEdward Thomson2021-09-221-0/+18
|
* changelog: fix typoEdward Thomson2021-09-221-1/+1
|
* Merge pull request #6069 from libgit2/ethomson/v1_3Edward Thomson2021-09-224-5/+51
|\ | | | | v1.3.0
| * v1.3: update version numberethomson/v1_3Edward Thomson2021-09-223-5/+5
| |
| * v1.3: changelogEdward Thomson2021-09-221-0/+46
|/
* 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.
* | Merge pull request #6067 from libgit2/ethomson/filter_commit_idEdward Thomson2021-09-219-33/+81
|\ \ | | | | | | filter: use a `git_oid` in filter options, not a pointer
| * | filter: use a `git_oid` in filter options, not a pointerethomson/filter_commit_idEdward Thomson2021-09-219-33/+81
| |/ | | | | | | | | | | | | 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 #6064 from libgit2/ethomson/ci_libssh2Edward Thomson2021-09-214-6/+4
|\ \ | | | | | | ci: pull libssh2 from www.libssh2.org
| * | ci: pull libssh2 from www.libssh2.orgethomson/ci_libssh2Edward Thomson2021-09-214-6/+4
| | | | | | | | | | | | | | | libssh2.org and www.libssh2.org were previously identical; now this is a redirect.
* | | Merge pull request #6066 from libgit2/ethomson/deprecationEdward Thomson2021-09-212-8/+7
|\ \ \ | |_|/ |/| | Fixes for deprecated APIs
| * | rebase: fix (deprecated) signing testethomson/deprecationEdward Thomson2021-09-211-7/+7
| | |
| * | email: don't clear buffer in append functionEdward Thomson2021-09-211-1/+0
|/ / | | | | | | | | `git_email__append_from_diff` is meant to - well, append from a diff. Clearing the buffer, by definition, is not appending. Stop doing that.
* | Merge pull request #6061 from libgit2/ethomson/emailEdward Thomson2021-09-2012-267/+1026
|\ \ | | | | | | Introduce `git_email_create`; deprecate `git_diff_format_email`
| * | diff: deprecate diff_format_emailethomson/emailEdward Thomson2021-09-184-116/+139
| | | | | | | | | | | | `git_diff_format_email` is deprecated in favor of `git_email_create`.
| * | email: include renames by defaultEdward Thomson2021-09-183-5/+132
| | | | | | | | | | | | | | | `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-183-9/+70
| | | | | | | | | | | | | | | `git format-patch` includes binary diffs by default when creating emails. Match this behavior.
| * | diff: use `git_email_create` in `diff_format_email`Edward Thomson2021-09-181-142/+7
| | |
| * | email: introduce 'append_from_diff'Edward Thomson2021-09-182-1/+51
| | | | | | | | | | | | | | | Introduce `git_email__append_from_diff` so that we don't always overwrite the input buffer.
| * | diff_commit_as_email: use `email_create`Edward Thomson2021-09-181-10/+13
| | | | | | | | | | | | Move the `git_diff_commit_as_email` function to use `email_create`.
| * | email: allow `git_diff_commit_as_email` to take 0 as patch indexEdward Thomson2021-09-181-1/+0
| | | | | | | | | | | | | | | Allow a `0` patch index and `0` patch count; in this case, simply don't display these in the email.