- 17 Oct, 2021 3 commits
-
-
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 committed -
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.
Edward Thomson committed -
hash: separate hashes and git_oid
Edward Thomson committed
-
- 14 Oct, 2021 1 commit
-
-
Edward Thomson committed
-
- 13 Oct, 2021 2 commits
-
-
Edward Thomson committed
-
git's default rename limit is 1000, ours should match.
Edward Thomson committed
-
- 02 Oct, 2021 3 commits
-
-
Edward Thomson committed
-
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.
Edward Thomson committed -
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.
Edward Thomson committed
-
- 01 Oct, 2021 2 commits
-
-
Edward Thomson committed
-
Edward Thomson committed
-
- 27 Sep, 2021 8 commits
-
-
Edward Thomson committed
-
examples: Free the git_config and git_config_entry after use
Edward Thomson committed -
Edward Thomson committed
-
oidarray: introduce `git_oidarray_dispose`
Edward Thomson committed -
Edward Thomson committed
-
Edward Thomson committed
-
buf: common_prefix takes a string array
Edward Thomson committed -
`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.
Edward Thomson committed
-
- 26 Sep, 2021 3 commits
-
-
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 committed -
The `repo` argument is now unnecessary. Remove it.
Edward Thomson committed -
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.
Edward Thomson committed
-
- 25 Sep, 2021 5 commits
-
-
Attribute lookups are done on paths relative to the repository. Fail if erroneously presented with an absolute path.
Edward Thomson committed -
Always pass a working-directory relative path to attribute lookups during checkout.
Edward Thomson committed -
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.
Edward Thomson committed -
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 committed -
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.)
Edward Thomson committed
-
- 24 Sep, 2021 1 commit
-
-
Paymon MARANDI committed
-
- 22 Sep, 2021 7 commits
-
-
Edward Thomson committed
-
Edward Thomson committed
-
v1.3.0
Edward Thomson committed -
Edward Thomson committed
-
Edward Thomson committed
-
diff: update `GIT_DIFF_IGNORE_BLANK_LINES`
Edward Thomson committed -
`GIT_DIFF_IGNORE_BLANK_LINES` needs to be within a (signed) int, per the `enum` definition of ISO C.
Edward Thomson committed
-
- 21 Sep, 2021 5 commits
-
-
filter: use a `git_oid` in filter options, not a pointer
Edward Thomson committed -
ci: pull libssh2 from www.libssh2.org
Edward Thomson committed -
www.libssh2.org
libssh2.org and www.libssh2.org were previously identical; now this is a redirect.
Edward Thomson committed -
Fixes for deprecated APIs
Edward Thomson committed -
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 committed
-