|
Packit Service |
20376f |
v0.26.8
|
|
Packit Service |
20376f |
-------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
This as a security release fixing the following list of issues:
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- The function family `git__strtol` is used to parse integers
|
|
Packit Service |
20376f |
from a buffer. As the functions do not take a buffer length as
|
|
Packit Service |
20376f |
argument, they will scan either until the end of the current
|
|
Packit Service |
20376f |
number or until a NUL byte is encountered. Many callers have
|
|
Packit Service |
20376f |
been misusing the function and called it on potentially
|
|
Packit Service |
20376f |
non-NUL-terminated buffers, resulting in possible out-of-bounds
|
|
Packit Service |
20376f |
reads. Callers have been fixed to use `git__strntol` functions
|
|
Packit Service |
20376f |
instead and `git__strtol` functions were removed.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- The function `git__strntol64` relied on the undefined behavior
|
|
Packit Service |
20376f |
of signed integer overflows. While the code tried to detect
|
|
Packit Service |
20376f |
such overflows after they have happened, this is unspecified
|
|
Packit Service |
20376f |
behavior and may lead to weird behavior on uncommon platforms.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- In the case where `git__strntol32` was unable to parse an
|
|
Packit Service |
20376f |
integer because it doesn't fit into an `int32_t`, it printed an
|
|
Packit Service |
20376f |
error message containing the string that is currently being
|
|
Packit Service |
20376f |
parsed. The code didn't truncate the string though, which
|
|
Packit Service |
20376f |
caused it to print the complete string until a NUL byte is
|
|
Packit Service |
20376f |
encountered and not only the currently parsed number. In case
|
|
Packit Service |
20376f |
where the string was not NUL terminated, this could have lead
|
|
Packit Service |
20376f |
to an out-of-bounds read.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- When parsing tags, all unknown fields that appear before the
|
|
Packit Service |
20376f |
tag message are skipped. This skipping is done by using a plain
|
|
Packit Service |
20376f |
`strstr(buffer, "\n\n")` to search for the two newlines that
|
|
Packit Service |
20376f |
separate tag fields from tag message. As it is not possible to
|
|
Packit Service |
20376f |
supply a buffer length to `strstr`, this call may skip over the
|
|
Packit Service |
20376f |
buffer's end and thus result in an out of bounds read. As
|
|
Packit Service |
20376f |
`strstr` may return a pointer that is out of bounds, the
|
|
Packit Service |
20376f |
following computation of `buffer_end - buffer` will overflow
|
|
Packit Service |
20376f |
and result in an allocation of an invalid length. Note that
|
|
Packit Service |
20376f |
when reading objects from the object database, we make sure to
|
|
Packit Service |
20376f |
always NUL terminate them, making the use of `strstr` safe.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- When parsing the "encoding" field of a commit, we may perform
|
|
Packit Service |
20376f |
an out of bounds read due to using `git__prefixcmp` instead of
|
|
Packit Service |
20376f |
`git__prefixncmp`. This can result in the parsed commit object
|
|
Packit Service |
20376f |
containing uninitialized data in both its message encoding and
|
|
Packit Service |
20376f |
message fields. Note that when reading objects from the object
|
|
Packit Service |
20376f |
database, we make sure to always NUL terminate them, making the
|
|
Packit Service |
20376f |
use of `strstr` safe.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.26.7
|
|
Packit Service |
20376f |
-------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
This is a security release fixing the following list of issues:
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- Submodule URLs and paths with a leading "-" are now ignored.
|
|
Packit Service |
20376f |
This is due to the recently discovered CVE-2018-17456, which
|
|
Packit Service |
20376f |
can lead to arbitrary code execution in upstream git. While
|
|
Packit Service |
20376f |
libgit2 itself is not vulnerable, it can be used to inject
|
|
Packit Service |
20376f |
options in an implementation which performs a recursive clone
|
|
Packit Service |
20376f |
by executing an external command.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- When running repack while doing repo writes,
|
|
Packit Service |
20376f |
`packfile_load__cb()` could see some temporary files in the
|
|
Packit Service |
20376f |
directory that were bigger than the usual, and makes `memcmp`
|
|
Packit Service |
20376f |
overflow on the `p->pack_name` string. This issue was reported
|
|
Packit Service |
20376f |
and fixed by bisho.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- The configuration file parser used unbounded recursion to parse
|
|
Packit Service |
20376f |
multiline variables, which could lead to a stack overflow. The
|
|
Packit Service |
20376f |
issue was reported by the oss-fuzz project, issue 10048 and
|
|
Packit Service |
20376f |
fixed by Nelson Elhage.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- The fix to the unbounded recursion introduced a memory leak in
|
|
Packit Service |
20376f |
the config parser. While this leak was never in a public
|
|
Packit Service |
20376f |
release, the oss-fuzz project reported this as issue 10127. The
|
|
Packit Service |
20376f |
fix was implemented by Nelson Elhage and Patrick Steinhardt.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- When parsing "ok" packets received via the smart protocol, our
|
|
Packit Service |
20376f |
parsing code did not correctly verify the bounds of the
|
|
Packit Service |
20376f |
packets, which could result in a heap-buffer overflow. The
|
|
Packit Service |
20376f |
issue was reported by the oss-fuzz project, issue 9749 and
|
|
Packit Service |
20376f |
fixed by Patrick Steinhardt.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- The parsing code for the smart protocol has been tightened in
|
|
Packit Service |
20376f |
general, fixing heap-buffer overflows when parsing the packet
|
|
Packit Service |
20376f |
type as well as for "ACK" and "unpack" packets. The issue was
|
|
Packit Service |
20376f |
discovered and fixed by Patrick Steinhardt.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- Fixed potential integer overflows on platforms with 16 bit
|
|
Packit Service |
20376f |
integers when parsing packets for the smart protocol. The issue
|
|
Packit Service |
20376f |
was discovered and fixed by Patrick Steinhardt.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
- Fixed potential NULL pointer dereference when parsing
|
|
Packit Service |
20376f |
configuration files which have "include.path" statements
|
|
Packit Service |
20376f |
without a value.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.26.6
|
|
Packit Service |
20376f |
-------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
This is a security release fixing out-of-bounds reads when
|
|
Packit Service |
20376f |
processing smart-protocol "ng" packets.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
When parsing an "ng" packet, we keep track of both the current position
|
|
Packit Service |
20376f |
as well as the remaining length of the packet itself. But instead of
|
|
Packit Service |
20376f |
taking care not to exceed the length, we pass the current pointer's
|
|
Packit Service |
20376f |
position to `strchr`, which will search for a certain character until
|
|
Packit Service |
20376f |
hitting NUL. It is thus possible to create a crafted packet which
|
|
Packit Service |
20376f |
doesn't contain a NUL byte to trigger an out-of-bounds read.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
The issue was discovered by the oss-fuzz project, issue 9406.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.26.5
|
|
Packit Service |
20376f |
-------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
This is a security release fixing out-of-bounds reads when
|
|
Packit Service |
20376f |
reading objects from a packfile. This corresponds to
|
|
Packit Service |
20376f |
CVE-2018-10887 and CVE-2018-10888, which were both reported by
|
|
Packit Service |
20376f |
Riccardo Schirone.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
When packing objects into a single so-called packfile, objects
|
|
Packit Service |
20376f |
may not get stored as complete copies but instead as deltas
|
|
Packit Service |
20376f |
against another object "base". A specially crafted delta object
|
|
Packit Service |
20376f |
could trigger an integer overflow and thus bypass our input
|
|
Packit Service |
20376f |
validation, which may result in copying memory before or after
|
|
Packit Service |
20376f |
the base object into the final deflated object. This may lead to
|
|
Packit Service |
20376f |
objects containing copies of system memory being written into the
|
|
Packit Service |
20376f |
object database. As the hash of those objects cannot be easily
|
|
Packit Service |
20376f |
controlled by the attacker, it is unlikely that any of those
|
|
Packit Service |
20376f |
objects will be valid and referenced by the commit graph.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
Note that the error could also be triggered by the function
|
|
Packit Service |
20376f |
`git_apply__patch`. But as this function is not in use outside of
|
|
Packit Service |
20376f |
our test suite, it is not a possible attack vector.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.26.4
|
|
Packit Service |
20376f |
-------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
This is a security release fixing insufficient validation of submodule names
|
|
Packit Service |
20376f |
(CVE-2018-11235, reported by Etienne Stalmans) and disallows `.gitmodules` files
|
|
Packit Service |
20376f |
as symlinks.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
While submodule names come from the untrusted ".gitmodules" file, we blindly
|
|
Packit Service |
20376f |
append the name to "$GIT_DIR/modules" to construct the final path of the
|
|
Packit Service |
20376f |
submodule repository. In case the name contains e.g. "../", an adversary would
|
|
Packit Service |
20376f |
be able to escape your repository and write data at arbitrary paths. In
|
|
Packit Service |
20376f |
accordance with git, we now enforce some rules for submodule names which will
|
|
Packit Service |
20376f |
cause libgit2 to ignore these malicious names.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
Adding a symlink as `.gitmodules` into the index from the workdir or checking
|
|
Packit Service |
20376f |
out such files is not allowed as this can make a Git implementation write
|
|
Packit Service |
20376f |
outside of the repository and bypass the `fsck` checks for CVE-2018-11235.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
libgit2 is not susceptible to CVE-2018-11233.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.26.3
|
|
Packit Service |
20376f |
-------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
This is a bugfix release. It includes the following non-exclusive list of
|
|
Packit Service |
20376f |
improvements, which have been backported from the master branch:
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fix cloning of the libgit2 project with `git clone --recursive` by removing an
|
|
Packit Service |
20376f |
invalid submodule from our testing data.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fix endianness of the port in `p_getaddrinfo()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fix handling of negative gitignore rules with wildcards.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fix handling of case-insensitive negative gitignore rules.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fix resolving references to a tag if the reference is stored with its fully
|
|
Packit Service |
20376f |
resolved OID in the packed-refs file.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fix checkout not treating worktree files as modified when only their mode has
|
|
Packit Service |
20376f |
changed.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fix rename detection with `GIT_DIFF_FIND_RENAMES_FROM_REWRITES`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Enable Windows 7 and earlier to use TLS 1.2.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.26.2
|
|
Packit Service |
20376f |
-------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
This is a security release fixing memory handling issues when reading crafted
|
|
Packit Service |
20376f |
repository index files. The issues allow for possible denial of service due to
|
|
Packit Service |
20376f |
allocation of large memory and out-of-bound reads.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
As the index is never transferred via the network, exploitation requires an
|
|
Packit Service |
20376f |
attacker to have access to the local repository.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.26.1
|
|
Packit Service |
20376f |
---------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
This is a security release fixing the following CVEs in the bundled zlib
|
|
Packit Service |
20376f |
library:
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* CVE-2016-9843
|
|
Packit Service |
20376f |
* CVE-2016-9841
|
|
Packit Service |
20376f |
* CVE-2016-9842
|
|
Packit Service |
20376f |
* CVE-2016-9840
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
All users compiling libgit2 with the bundled zlib instead of using the
|
|
Packit Service |
20376f |
system-provided zlib must upgrade.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.26
|
|
Packit Service |
20376f |
-----
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### Changes or improvements
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Support for opening, creating and modifying worktrees.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* We can now detect SHA1 collisions resulting from the SHAttered attack. These
|
|
Packit Service |
20376f |
checks can be enabled at build time via `-DUSE_SHA1DC`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fix for missing implementation of `git_merge_driver_source` getters.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fix for installed pkg-config file being broken when the prefix contains
|
|
Packit Service |
20376f |
spaces.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* We now detect when the hashsum of on-disk objects does not match their
|
|
Packit Service |
20376f |
expected hashsum.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* We now support open-ended ranges (e.g. "master..", "...master") in our
|
|
Packit Service |
20376f |
revision range parsing code.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* We now correctly compute ignores with leading "/" in subdirectories.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* We now optionally call `fsync` on loose objects, packfiles and their indexes,
|
|
Packit Service |
20376f |
loose references and packed reference files.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* We can now build against OpenSSL v1.1 and against LibreSSL.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `GIT_MERGE_OPTIONS_INIT` now includes a setting to perform rename detection.
|
|
Packit Service |
20376f |
This aligns this structure with the default by `git_merge` and
|
|
Packit Service |
20376f |
`git_merge_trees` when `NULL` was provided for the options.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Improvements for reading index v4 files.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Perform additional retries for filesystem operations on Windows when files
|
|
Packit Service |
20376f |
are temporarily locked by other processes.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### API additions
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* New family of functions to handle worktrees:
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_worktree_list()` lets you look up worktrees for a repository.
|
|
Packit Service |
20376f |
* `git_worktree_lookup()` lets you get a specific worktree.
|
|
Packit Service |
20376f |
* `git_worktree_open_from_repository()` lets you get the associated worktree
|
|
Packit Service |
20376f |
of a repository.
|
|
Packit Service |
20376f |
a worktree.
|
|
Packit Service |
20376f |
* `git_worktree_add` lets you create new worktrees.
|
|
Packit Service |
20376f |
* `git_worktree_prune` lets you remove worktrees from disk.
|
|
Packit Service |
20376f |
* `git_worktree_lock()` and `git_worktree_unlock()` let you lock
|
|
Packit Service |
20376f |
respectively unlock a worktree.
|
|
Packit Service |
20376f |
* `git_repository_open_from_worktree()` lets you open a repository via
|
|
Packit Service |
20376f |
* `git_repository_head_for_worktree()` lets you get the current `HEAD` for a
|
|
Packit Service |
20376f |
linked worktree.
|
|
Packit Service |
20376f |
* `git_repository_head_detached_for_worktree()` lets you check whether a
|
|
Packit Service |
20376f |
linked worktree is in detached HEAD mode.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_repository_item_path()` lets you retrieve paths for various repository
|
|
Packit Service |
20376f |
files.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_repository_commondir()` lets you retrieve the common directory of a
|
|
Packit Service |
20376f |
repository.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_branch_is_checked_out()` allows you to check whether a branch is checked
|
|
Packit Service |
20376f |
out in a repository or any of its worktrees.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_repository_submodule_cache_all()` and
|
|
Packit Service |
20376f |
`git_repository_submodule_cache_clear()` functions allow you to prime or clear
|
|
Packit Service |
20376f |
the submodule cache of a repository.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* You can disable strict hash verifications via the
|
|
Packit Service |
20376f |
`GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION` option with `git_libgit2_opts()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* You can enable us calling `fsync` for various files inside the ".git"
|
|
Packit Service |
20376f |
directory by setting the `GIT_OPT_ENABLE_FSYNC_GITDIR` option with
|
|
Packit Service |
20376f |
`git_libgit2_opts()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* You can now enable "offset deltas" when creating packfiles and negotiating
|
|
Packit Service |
20376f |
packfiles with a remote server by setting `GIT_OPT_ENABLE_OFS_DELTA` option
|
|
Packit Service |
20376f |
with `GIT_libgit2_opts()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* You can now set the default share mode on Windows for opening files using
|
|
Packit Service |
20376f |
`GIT_OPT_SET_WINDOWS_SHAREMODE` option with `git_libgit2_opts()`.
|
|
Packit Service |
20376f |
You can query the current share mode with `GIT_OPT_GET_WINDOWS_SHAREMODE`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_transport_smart_proxy_options()' enables you to get the proxy options for
|
|
Packit Service |
20376f |
smart transports.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `GIT_FILTER_INIT` macro and the `git_filter_init` function are provided
|
|
Packit Service |
20376f |
to initialize a `git_filter` structure.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### Breaking API changes
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `clone_checkout_strategy` has been removed from
|
|
Packit Service |
20376f |
`git_submodule_update_option`. The checkout strategy used to clone will
|
|
Packit Service |
20376f |
be the same strategy specified in `checkout_opts`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.25
|
|
Packit Service |
20376f |
-------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### Changes or improvements
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fix repository discovery with `git_repository_discover` and
|
|
Packit Service |
20376f |
`git_repository_open_ext` to match git's handling of a ceiling
|
|
Packit Service |
20376f |
directory at the current directory. git only checks ceiling
|
|
Packit Service |
20376f |
directories when its search ascends to a parent directory. A ceiling
|
|
Packit Service |
20376f |
directory matching the starting directory will not prevent git from
|
|
Packit Service |
20376f |
finding a repository in the starting directory or a parent directory.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Do not fail when deleting remotes in the presence of broken
|
|
Packit Service |
20376f |
global configs which contain branches.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Support for reading and writing git index v4 files
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Improve the performance of the revwalk and bring us closer to git's code.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The reference db has improved support for concurrency and returns `GIT_ELOCKED`
|
|
Packit Service |
20376f |
when an operation could not be performed due to locking.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Nanosecond resolution is now activated by default, following git's change to
|
|
Packit Service |
20376f |
do this.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* We now restrict the set of ciphers we let OpenSSL use by default.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Users can now register their own merge drivers for use with `.gitattributes`.
|
|
Packit Service |
20376f |
The library also gained built-in support for the union merge driver.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The default for creating references is now to validate that the object does
|
|
Packit Service |
20376f |
exist.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Add `git_proxy_options` which is used by the different networking
|
|
Packit Service |
20376f |
implementations to let the caller specify the proxy settings instead of
|
|
Packit Service |
20376f |
relying on the environment variables.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### API additions
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* You can now get the user-agent used by libgit2 using the
|
|
Packit Service |
20376f |
`GIT_OPT_GET_USER_AGENT` option with `git_libgit2_opts()`.
|
|
Packit Service |
20376f |
It is the counterpart to `GIT_OPT_SET_USER_AGENT`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `GIT_OPT_SET_SSL_CIPHERS` option for `git_libgit2_opts()` lets you specify
|
|
Packit Service |
20376f |
a custom list of ciphers to use for OpenSSL.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_commit_create_buffer()` creates a commit and writes it into a
|
|
Packit Service |
20376f |
user-provided buffer instead of writing it into the object db. Combine it with
|
|
Packit Service |
20376f |
`git_commit_create_with_signature()` in order to create a commit with a
|
|
Packit Service |
20376f |
cryptographic signature.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_blob_create_fromstream()` and
|
|
Packit Service |
20376f |
`git_blob_create_fromstream_commit()` allow you to create a blob by
|
|
Packit Service |
20376f |
writing into a stream. Useful when you do not know the final size or
|
|
Packit Service |
20376f |
want to copy the contents from another stream.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* New flags for `git_repository_open_ext`:
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `GIT_REPOSITORY_OPEN_NO_DOTGIT` - Do not check for a repository by
|
|
Packit Service |
20376f |
appending `/.git` to the `start_path`; only open the repository if
|
|
Packit Service |
20376f |
`start_path` itself points to the git directory.
|
|
Packit Service |
20376f |
* `GIT_REPOSITORY_OPEN_FROM_ENV` - Find and open a git repository,
|
|
Packit Service |
20376f |
respecting the environment variables used by the git command-line
|
|
Packit Service |
20376f |
tools. If set, `git_repository_open_ext` will ignore the other
|
|
Packit Service |
20376f |
flags and the `ceiling_dirs` argument, and will allow a NULL
|
|
Packit Service |
20376f |
`path` to use `GIT_DIR` or search from the current directory. The
|
|
Packit Service |
20376f |
search for a repository will respect `$GIT_CEILING_DIRECTORIES`
|
|
Packit Service |
20376f |
and `$GIT_DISCOVERY_ACROSS_FILESYSTEM`. The opened repository
|
|
Packit Service |
20376f |
will respect `$GIT_INDEX_FILE`, `$GIT_NAMESPACE`,
|
|
Packit Service |
20376f |
`$GIT_OBJECT_DIRECTORY`, and `$GIT_ALTERNATE_OBJECT_DIRECTORIES`.
|
|
Packit Service |
20376f |
In the future, this flag will also cause `git_repository_open_ext`
|
|
Packit Service |
20376f |
to respect `$GIT_WORK_TREE` and `$GIT_COMMON_DIR`; currently,
|
|
Packit Service |
20376f |
`git_repository_open_ext` with this flag will error out if either
|
|
Packit Service |
20376f |
`$GIT_WORK_TREE` or `$GIT_COMMON_DIR` is set.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_diff_from_buffer()` can create a `git_diff` object from the contents
|
|
Packit Service |
20376f |
of a git-style patch file.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_index_version()` and `git_index_set_version()` to get and set
|
|
Packit Service |
20376f |
the index version
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_odb_expand_ids()` lets you check for the existence of multiple
|
|
Packit Service |
20376f |
objects at once.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The new `git_blob_dup()`, `git_commit_dup()`, `git_tag_dup()` and
|
|
Packit Service |
20376f |
`git_tree_dup()` functions provide type-specific wrappers for
|
|
Packit Service |
20376f |
`git_object_dup()` to reduce noise and increase type safety for callers.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_reference_dup()` lets you duplicate a reference to aid in ownership
|
|
Packit Service |
20376f |
management and cleanup.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_signature_from_buffer()` lets you create a signature from a string in the
|
|
Packit Service |
20376f |
format that appear in objects.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_tree_create_updated()` lets you create a tree based on another one
|
|
Packit Service |
20376f |
together with a list of updates. For the covered update cases, it's more
|
|
Packit Service |
20376f |
efficient than the `git_index` route.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_apply_patch()` applies hunks from a `git_patch` to a buffer.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_diff_to_buf()` lets you print an entire diff directory to a buffer,
|
|
Packit Service |
20376f |
similar to how `git_patch_to_buf()` works.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_proxy_init_options()` is added to initialize a `git_proxy_options`
|
|
Packit Service |
20376f |
structure at run-time.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_merge_driver_register()`, `git_merge_driver_unregister()` let you
|
|
Packit Service |
20376f |
register and unregister a custom merge driver to be used when `.gitattributes`
|
|
Packit Service |
20376f |
specifies it.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_merge_driver_lookup()` can be used to look up a merge driver by name.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_merge_driver_source_repo()`, `git_merge_driver_source_ancestor()`,
|
|
Packit Service |
20376f |
`git_merge_driver_source_ours()`, `git_merge_driver_source_theirs()`,
|
|
Packit Service |
20376f |
`git_merge_driver_source_file_options()` added as accessors to
|
|
Packit Service |
20376f |
`git_merge_driver_source`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### API removals
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_blob_create_fromchunks()` has been removed in favour of
|
|
Packit Service |
20376f |
`git_blob_create_fromstream()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### Breaking API changes
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_packbuilder_object_count` and `git_packbuilder_written` now
|
|
Packit Service |
20376f |
return a `size_t` instead of a `uint32_t` for more thorough
|
|
Packit Service |
20376f |
compatibility with the rest of the library.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_packbuiler_progress` now provides explicitly sized `uint32_t`
|
|
Packit Service |
20376f |
values instead of `unsigned int`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_diff_file` now includes an `id_abbrev` field that reflects the
|
|
Packit Service |
20376f |
number of nibbles set in the `id` field.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_odb_backend` now has a `freshen` function pointer. This optional
|
|
Packit Service |
20376f |
function pointer is similar to the `exists` function, but it will update
|
|
Packit Service |
20376f |
a last-used marker. For filesystem-based object databases, this updates
|
|
Packit Service |
20376f |
the timestamp of the file containing the object, to indicate "freshness".
|
|
Packit Service |
20376f |
If this is `NULL`, then it will not be called and the `exists` function
|
|
Packit Service |
20376f |
will be used instead.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_connect()` now accepts `git_proxy_options` argument, and
|
|
Packit Service |
20376f |
`git_fetch_options` and `git_push_options` each have a `proxy_opts` field.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_merge_options` now provides a `default_driver` that can be used
|
|
Packit Service |
20376f |
to provide the name of a merge driver to be used to handle files changed
|
|
Packit Service |
20376f |
during a merge.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.24
|
|
Packit Service |
20376f |
-------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### Changes or improvements
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Custom merge drivers can now be registered, which allows callers to
|
|
Packit Service |
20376f |
configure callbacks to honor `merge=driver` configuration in
|
|
Packit Service |
20376f |
`.gitattributes`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Custom filters can now be registered with wildcard attributes, for
|
|
Packit Service |
20376f |
example `filter=*`. Consumers should examine the attributes parameter
|
|
Packit Service |
20376f |
of the `check` function for details.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Symlinks are now followed when locking a file, which can be
|
|
Packit Service |
20376f |
necessary when multiple worktrees share a base repository.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* You can now set your own user-agent to be sent for HTTP requests by
|
|
Packit Service |
20376f |
using the `GIT_OPT_SET_USER_AGENT` with `git_libgit2_opts()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* You can set custom HTTP header fields to be sent along with requests
|
|
Packit Service |
20376f |
by passing them in the fetch and push options.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Tree objects are now assumed to be sorted. If a tree is not
|
|
Packit Service |
20376f |
correctly formed, it will give bad results. This is the git approach
|
|
Packit Service |
20376f |
and cuts a significant amount of time when reading the trees.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Filter registration is now protected against concurrent
|
|
Packit Service |
20376f |
registration.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Filenames which are not valid on Windows in an index no longer cause
|
|
Packit Service |
20376f |
to fail to parse it on that OS.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Rebases can now be performed purely in-memory, without touching the
|
|
Packit Service |
20376f |
repository's workdir.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* When adding objects to the index, or when creating new tree or commit
|
|
Packit Service |
20376f |
objects, the inputs are validated to ensure that the dependent objects
|
|
Packit Service |
20376f |
exist and are of the correct type. This object validation can be
|
|
Packit Service |
20376f |
disabled with the GIT_OPT_ENABLE_STRICT_OBJECT_CREATION option.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The WinHTTP transport's handling of bad credentials now behaves like
|
|
Packit Service |
20376f |
the others, asking for credentials again.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### API additions
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_config_lock()` has been added, which allow for
|
|
Packit Service |
20376f |
transactional/atomic complex updates to the configuration, removing
|
|
Packit Service |
20376f |
the opportunity for concurrent operations and not committing any
|
|
Packit Service |
20376f |
changes until the unlock.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_diff_options` added a new callback `progress_cb` to report on the
|
|
Packit Service |
20376f |
progress of the diff as files are being compared. The documentation of
|
|
Packit Service |
20376f |
the existing callback `notify_cb` was updated to reflect that it only
|
|
Packit Service |
20376f |
gets called when new deltas are added to the diff.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_fetch_options` and `git_push_options` have gained a `custom_headers`
|
|
Packit Service |
20376f |
field to set the extra HTTP header fields to send.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_stream_register_tls()` lets you register a callback to be used
|
|
Packit Service |
20376f |
as the constructor for a TLS stream instead of the libgit2 built-in
|
|
Packit Service |
20376f |
one.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_commit_header_field()` allows you to look up a specific header
|
|
Packit Service |
20376f |
field in a commit.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_commit_extract_signature()` extracts the signature from a
|
|
Packit Service |
20376f |
commit and gives you both the signature and the signed data so you
|
|
Packit Service |
20376f |
can verify it.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### API removals
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* No APIs were removed in this version.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### Breaking API changes
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_merge_tree_flag_t` is now `git_merge_flag_t`. Subsequently,
|
|
Packit Service |
20376f |
its members are no longer prefixed with `GIT_MERGE_TREE_FLAG` but are
|
|
Packit Service |
20376f |
now prefixed with `GIT_MERGE_FLAG`, and the `tree_flags` field of the
|
|
Packit Service |
20376f |
`git_merge_options` structure is now named `flags`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_merge_file_flags_t` enum is now `git_merge_file_flag_t` for
|
|
Packit Service |
20376f |
consistency with other enum type names.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_cert` descendent types now have a proper `parent` member
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* It is the responsibility of the refdb backend to decide what to do
|
|
Packit Service |
20376f |
with the reflog on ref deletion. The file-based backend must delete
|
|
Packit Service |
20376f |
it, a database-backed one may wish to archive it.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_config_backend` has gained two entries. `lock` and `unlock`
|
|
Packit Service |
20376f |
with which to implement the transactional/atomic semantics for the
|
|
Packit Service |
20376f |
configuration backend.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_index_add` and `git_index_conflict_add()` will now use the case
|
|
Packit Service |
20376f |
as provided by the caller on case insensitive systems. Previous
|
|
Packit Service |
20376f |
versions would keep the case as it existed in the index. This does
|
|
Packit Service |
20376f |
not affect the higher-level `git_index_add_bypath` or
|
|
Packit Service |
20376f |
`git_index_add_frombuffer` functions.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `notify_payload` field of `git_diff_options` was renamed to `payload`
|
|
Packit Service |
20376f |
to reflect that it's also the payload for the new progress callback.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_config_level_t` enum has gained a higher-priority value
|
|
Packit Service |
20376f |
`GIT_CONFIG_LEVEL_PROGRAMDATA` which represent a rough Windows equivalent
|
|
Packit Service |
20376f |
to the system level configuration.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_rebase_options` now has a `merge_options` field.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The index no longer performs locking itself. This is not something
|
|
Packit Service |
20376f |
users of the library should have been relying on as it's not part of
|
|
Packit Service |
20376f |
the concurrency guarantees.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_connect()` now takes a `custom_headers` argument to set
|
|
Packit Service |
20376f |
the extra HTTP header fields to send.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.23
|
|
Packit Service |
20376f |
------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### Changes or improvements
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Patience and minimal diff drivers can now be used for merges.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Merges can now ignore whitespace changes.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Updated binary identification in CRLF filtering to avoid false positives in
|
|
Packit Service |
20376f |
UTF-8 files.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Rename and copy detection is enabled for small files.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Checkout can now handle an initial checkout of a repository, making
|
|
Packit Service |
20376f |
`GIT_CHECKOUT_SAFE_CREATE` unnecessary for users of clone.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The signature parameter in the ref-modifying functions has been
|
|
Packit Service |
20376f |
removed. Use `git_repository_set_ident()` and
|
|
Packit Service |
20376f |
`git_repository_ident()` to override the signature to be used.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The local transport now auto-scales the number of threads to use
|
|
Packit Service |
20376f |
when creating the packfile instead of sticking to one.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Reference renaming now uses the right id for the old value.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The annotated version of branch creation, HEAD detaching and reset
|
|
Packit Service |
20376f |
allow for specifying the expression from the user to be put into the
|
|
Packit Service |
20376f |
reflog.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_rebase_commit` now returns `GIT_EUNMERGED` when you attempt to
|
|
Packit Service |
20376f |
commit with unstaged changes.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* On Mac OS X, we now use SecureTransport to provide the cryptographic
|
|
Packit Service |
20376f |
support for HTTPS connections insead of OpenSSL.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Checkout can now accept an index for the baseline computations via the
|
|
Packit Service |
20376f |
`baseline_index` member.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The configuration for fetching is no longer stored inside the
|
|
Packit Service |
20376f |
`git_remote` struct but has been moved to a `git_fetch_options`. The
|
|
Packit Service |
20376f |
remote functions now take these options or the callbacks instead of
|
|
Packit Service |
20376f |
setting them beforehand.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_submodule` instances are no longer cached or shared across
|
|
Packit Service |
20376f |
lookup. Each submodule represents the configuration at the time of
|
|
Packit Service |
20376f |
loading.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The index now uses diffs for `add_all()` and `update_all()` which
|
|
Packit Service |
20376f |
gives it a speed boost and closer semantics to git.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The ssh transport now reports the stderr output from the server as
|
|
Packit Service |
20376f |
the error message, which allows you to get the "repository not
|
|
Packit Service |
20376f |
found" messages.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_index_conflict_add()` will remove staged entries that exist for
|
|
Packit Service |
20376f |
conflicted paths.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The flags for a `git_diff_file` will now have the `GIT_DIFF_FLAG_EXISTS`
|
|
Packit Service |
20376f |
bit set when a file exists on that side of the diff. This is useful
|
|
Packit Service |
20376f |
for understanding whether a side of the diff exists in the presence of
|
|
Packit Service |
20376f |
a conflict.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The constructor for a write-stream into the odb now takes
|
|
Packit Service |
20376f |
`git_off_t` instead of `size_t` for the size of the blob, which
|
|
Packit Service |
20376f |
allows putting large files into the odb on 32-bit systems.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The remote's push and pull URLs now honor the url.$URL.insteadOf
|
|
Packit Service |
20376f |
configuration. This allows modifying URL prefixes to a custom
|
|
Packit Service |
20376f |
value via gitconfig.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_diff_foreach`, `git_diff_blobs`, `git_diff_blob_to_buffer`,
|
|
Packit Service |
20376f |
and `git_diff_buffers` now accept a new binary callback of type
|
|
Packit Service |
20376f |
`git_diff_binary_cb` that includes the binary diff information.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The race condition mitigations described in `racy-git.txt` have been
|
|
Packit Service |
20376f |
implemented.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* If libcurl is installed, we will use it to connect to HTTP(S)
|
|
Packit Service |
20376f |
servers.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### API additions
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_merge_options` gained a `file_flags` member.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Parsing and retrieving a configuration value as a path is exposed
|
|
Packit Service |
20376f |
via `git_config_parse_path()` and `git_config_get_path()`
|
|
Packit Service |
20376f |
respectively.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_repository_set_ident()` and `git_repository_ident()` serve to
|
|
Packit Service |
20376f |
set and query which identity will be used when writing to the
|
|
Packit Service |
20376f |
reflog.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_config_entry_free()` frees a config entry.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_config_get_string_buf()` provides a way to safely retrieve a
|
|
Packit Service |
20376f |
string from a non-snapshot configuration.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_annotated_commit_from_revspec()` allows to get an annotated
|
|
Packit Service |
20376f |
commit from an extended sha synatx string.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_repository_set_head_detached_from_annotated()`,
|
|
Packit Service |
20376f |
`git_branch_create_from_annotated()` and
|
|
Packit Service |
20376f |
`git_reset_from_annotated()` allow for the caller to provide an
|
|
Packit Service |
20376f |
annotated commit through which they can control what expression is
|
|
Packit Service |
20376f |
put into the reflog as the source/target.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_index_add_frombuffer()` can now create a blob from memory
|
|
Packit Service |
20376f |
buffer and add it to the index which is attached to a repository.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The structure `git_fetch_options` has been added to determine the
|
|
Packit Service |
20376f |
runtime configuration for fetching, such as callbacks, pruning and
|
|
Packit Service |
20376f |
autotag behaviour. It has the runtime initializer
|
|
Packit Service |
20376f |
`git_fetch_init_options()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The enum `git_fetch_prune_t` has been added, letting you specify the
|
|
Packit Service |
20376f |
pruning behaviour for a fetch.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* A push operation will notify the caller of what updates it indends
|
|
Packit Service |
20376f |
to perform on the remote, which provides similar information to
|
|
Packit Service |
20376f |
git's pre-push hook.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_stash_apply()` can now apply a stashed state from the stash list,
|
|
Packit Service |
20376f |
placing the data into the working directory and index.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_stash_pop()` will apply a stashed state (like `git_stash_apply()`)
|
|
Packit Service |
20376f |
but will remove the stashed state after a successful application.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* A new error code `GIT_EEOF` indicates an early EOF from the
|
|
Packit Service |
20376f |
server. This typically indicates an error with the URL or
|
|
Packit Service |
20376f |
configuration of the server, and tools can use this to show messages
|
|
Packit Service |
20376f |
about failing to communicate with the server.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* A new error code `GIT_EINVALID` indicates that an argument to a
|
|
Packit Service |
20376f |
function is invalid, or an invalid operation was requested.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_diff_index_to_workdir()` and `git_diff_tree_to_index()` will now
|
|
Packit Service |
20376f |
produce deltas of type `GIT_DELTA_CONFLICTED` to indicate that the index
|
|
Packit Service |
20376f |
side of the delta is a conflict.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_status` family of functions will now produce status of type
|
|
Packit Service |
20376f |
`GIT_STATUS_CONFLICTED` to indicate that a conflict exists for that file
|
|
Packit Service |
20376f |
in the index.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_index_entry_is_conflict()` is a utility function to determine if
|
|
Packit Service |
20376f |
a given index entry has a non-zero stage entry, indicating that it is
|
|
Packit Service |
20376f |
one side of a conflict.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* It is now possible to pass a keypair via a buffer instead of a
|
|
Packit Service |
20376f |
path. For this, `GIT_CREDTYPE_SSH_MEMORY` and
|
|
Packit Service |
20376f |
`git_cred_ssh_key_memory_new()` have been added.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_filter_list_contains` will indicate whether a particular
|
|
Packit Service |
20376f |
filter will be run in the given filter list.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_commit_header_field()` has been added, which allows retrieving
|
|
Packit Service |
20376f |
the contents of an arbitrary header field.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_submodule_set_branch()` allows to set the configured branch for
|
|
Packit Service |
20376f |
a submodule.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### API removals
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_save()` and `git_remote_clear_refspecs()` have been
|
|
Packit Service |
20376f |
removed. Remote's configuration is changed via the configuration
|
|
Packit Service |
20376f |
directly or through a convenience function which performs changes to
|
|
Packit Service |
20376f |
the configuration directly.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_set_callbacks()`, `git_remote_get_callbacks()` and
|
|
Packit Service |
20376f |
`git_remote_set_transport()` have been removed and the remote no
|
|
Packit Service |
20376f |
longer stores this configuration.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_set_fetch_refpecs()` and
|
|
Packit Service |
20376f |
`git_remote_set_push_refspecs()` have been removed. There is no
|
|
Packit Service |
20376f |
longer a way to set the base refspecs at run-time.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_submodule_save()` has been removed. The submodules are no
|
|
Packit Service |
20376f |
longer configured via the objects.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_submodule_reload_all()` has been removed as we no longer cache
|
|
Packit Service |
20376f |
submodules.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### Breaking API changes
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_smart_subtransport_cb` now has a `param` parameter.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_merge_options` structure member `flags` has been renamed
|
|
Packit Service |
20376f |
to `tree_flags`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_merge_file_options` structure member `flags` is now
|
|
Packit Service |
20376f |
an unsigned int. It was previously a `git_merge_file_flags_t`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `GIT_CHECKOUT_SAFE_CREATE` has been removed. Most users will generally
|
|
Packit Service |
20376f |
be able to switch to `GIT_CHECKOUT_SAFE`, but if you require missing
|
|
Packit Service |
20376f |
file handling during checkout, you may now use `GIT_CHECKOUT_SAFE |
|
|
Packit Service |
20376f |
GIT_CHECKOUT_RECREATE_MISSING`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_clone_options` and `git_submodule_update_options`
|
|
Packit Service |
20376f |
structures no longer have a `signature` field.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The following functions have removed the signature and/or log message
|
|
Packit Service |
20376f |
parameters in favour of git-emulating ones.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_branch_create()`, `git_branch_move()`
|
|
Packit Service |
20376f |
* `git_rebase_init()`, `git_rebase_abort()`
|
|
Packit Service |
20376f |
* `git_reference_symbolic_create_matching()`,
|
|
Packit Service |
20376f |
`git_reference_symbolic_create()`, `git_reference_create()`,
|
|
Packit Service |
20376f |
`git_reference_create_matching()`,
|
|
Packit Service |
20376f |
`git_reference_symbolic_set_target()`,
|
|
Packit Service |
20376f |
`git_reference_set_target()`, `git_reference_rename()`
|
|
Packit Service |
20376f |
* `git_remote_update_tips()`, `git_remote_fetch()`, `git_remote_push()`
|
|
Packit Service |
20376f |
* `git_repository_set_head()`,
|
|
Packit Service |
20376f |
`git_repository_set_head_detached()`,
|
|
Packit Service |
20376f |
`git_repository_detach_head()`
|
|
Packit Service |
20376f |
* `git_reset()`
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_config_get_entry()` now gives back a ref-counted
|
|
Packit Service |
20376f |
`git_config_entry`. You must free it when you no longer need it.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_config_get_string()` will return an error if used on a
|
|
Packit Service |
20376f |
non-snapshot configuration, as there can be no guarantee that the
|
|
Packit Service |
20376f |
returned pointer is valid.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_note_default_ref()` now uses a `git_buf` to return the string,
|
|
Packit Service |
20376f |
as the string is otherwise not guaranteed to stay allocated.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_rebase_operation_current()` will return `GIT_REBASE_NO_OPERATION`
|
|
Packit Service |
20376f |
if it is called immediately after creating a rebase session but before
|
|
Packit Service |
20376f |
you have applied the first patch.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_rebase_options` now contains a `git_checkout_options` struct
|
|
Packit Service |
20376f |
that will be used for functions that modify the working directory,
|
|
Packit Service |
20376f |
namely `git_rebase_init`, `git_rebase_next` and
|
|
Packit Service |
20376f |
`git_rebase_abort`. As a result, `git_rebase_open` now also takes
|
|
Packit Service |
20376f |
a `git_rebase_options` and only the `git_rebase_init` and
|
|
Packit Service |
20376f |
`git_rebase_open` functions take a `git_rebase_options`, where they
|
|
Packit Service |
20376f |
will persist the options to subsequent `git_rebase` calls.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_clone_options` struct now has fetch options in a
|
|
Packit Service |
20376f |
`fetch_opts` field instead of remote callbacks in
|
|
Packit Service |
20376f |
`remote_callbacks`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The remote callbacks has gained a new member `push_negotiation`
|
|
Packit Service |
20376f |
which gets called before sending the update commands to the server.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The following functions no longer act on a remote instance but
|
|
Packit Service |
20376f |
change the repository's configuration. Their signatures have changed
|
|
Packit Service |
20376f |
accordingly:
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_set_url()`, `git_remote_seturl()`
|
|
Packit Service |
20376f |
* `git_remote_add_fetch()`, `git_remote_add_push()` and
|
|
Packit Service |
20376f |
* `git_remote_set_autotag()`
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_connect()` and `git_remote_prune()` now take a pointer
|
|
Packit Service |
20376f |
to the callbacks.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_fetch()` and `git_remote_download()` now take a pointer
|
|
Packit Service |
20376f |
to fetch options which determine the runtime configuration.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_remote_autotag_option_t` values have been changed. It has
|
|
Packit Service |
20376f |
gained a `_UNSPECIFIED` default value to specify no override for the
|
|
Packit Service |
20376f |
configured setting.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_update_tips()` now takes a pointer to the callbacks as
|
|
Packit Service |
20376f |
well as a boolean whether to write `FETCH_HEAD` and the autotag
|
|
Packit Service |
20376f |
setting.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_create_anonymous()` no longer takes a fetch refspec as
|
|
Packit Service |
20376f |
url-only remotes cannot have configured refspecs.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_submodule_update_options` struct now has fetch options in
|
|
Packit Service |
20376f |
the `fetch_opts` field instead of callbacks in the
|
|
Packit Service |
20376f |
`remote_callbacks` field.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The following functions no longer act on a submodule instance but
|
|
Packit Service |
20376f |
change the repository's configuration. Their signatures have changed
|
|
Packit Service |
20376f |
accordingly:
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_submodule_set_url()`, `git_submodule_set_ignore()`,
|
|
Packit Service |
20376f |
`git_submodule_set_update()`,
|
|
Packit Service |
20376f |
`git_submodule_set_fetch_recurse_submodules()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_submodule_status()` no longer takes a submodule instance but a
|
|
Packit Service |
20376f |
repsitory, a submodule name and an ignore setting.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `push` function in the `git_transport` interface now takes a
|
|
Packit Service |
20376f |
pointer to the remote callbacks.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_index_entry` struct's fields' types have been changed to
|
|
Packit Service |
20376f |
more accurately reflect what is in fact stored in the
|
|
Packit Service |
20376f |
index. Specifically, time and file size are 32 bits intead of 64, as
|
|
Packit Service |
20376f |
these values are truncated.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `GIT_EMERGECONFLICT` is now `GIT_ECONFLICT`, which more accurately
|
|
Packit Service |
20376f |
describes the nature of the error.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* It is no longer allowed to call `git_buf_grow()` on buffers
|
|
Packit Service |
20376f |
borrowing the memory they point to.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
v0.22
|
|
Packit Service |
20376f |
------
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### Changes or improvements
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_signature_new()` now requires a non-empty email address.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Use CommonCrypto libraries for SHA-1 calculation on Mac OS X.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Disable SSL compression and SSLv2 and SSLv3 ciphers in favor of TLSv1
|
|
Packit Service |
20376f |
in OpenSSL.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The fetch behavior of remotes with autotag set to `GIT_REMOTE_DOWNLOAD_TAGS_ALL`
|
|
Packit Service |
20376f |
has been changed to match git 1.9.0 and later. In this mode, libgit2 now
|
|
Packit Service |
20376f |
fetches all tags in addition to whatever else needs to be fetched.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_checkout()` now handles case-changing renames correctly on
|
|
Packit Service |
20376f |
case-insensitive filesystems; for example renaming "readme" to "README".
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The search for libssh2 is now done via pkg-config instead of a
|
|
Packit Service |
20376f |
custom search of a few directories.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Add support for core.protectHFS and core.protectNTFS. Add more
|
|
Packit Service |
20376f |
validation for filenames which we write such as references.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The local transport now generates textual progress output like
|
|
Packit Service |
20376f |
git-upload-pack does ("counting objects").
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_checkout_index()` can now check out an in-memory index that is not
|
|
Packit Service |
20376f |
necessarily the repository's index, so you may check out an index
|
|
Packit Service |
20376f |
that was produced by git_merge and friends while retaining the cached
|
|
Packit Service |
20376f |
information.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Remove the default timeout for receiving / sending data over HTTP using
|
|
Packit Service |
20376f |
the WinHTTP transport layer.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Add SPNEGO (Kerberos) authentication using GSSAPI on Unix systems.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Provide built-in objects for the empty blob (e69de29) and empty
|
|
Packit Service |
20376f |
tree (4b825dc) objects.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The index' tree cache is now filled upon read-tree and write-tree
|
|
Packit Service |
20376f |
and the cache is written to disk.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* LF -> CRLF filter refuses to handle mixed-EOL files
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* LF -> CRLF filter now runs when * text = auto (with Git for Windows 1.9.4)
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* File unlocks are atomic again via rename. Read-only files on Windows are
|
|
Packit Service |
20376f |
made read-write if necessary.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Share open packfiles across repositories to share descriptors and mmaps.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Use a map for the treebuilder, making insertion O(1)
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The build system now accepts an option EMBED_SSH_PATH which when set
|
|
Packit Service |
20376f |
tells it to include a copy of libssh2 at the given location. This is
|
|
Packit Service |
20376f |
enabled for MSVC.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Add support for refspecs with the asterisk in the middle of a
|
|
Packit Service |
20376f |
pattern.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Fetching now performs opportunistic updates. To achieve this, we
|
|
Packit Service |
20376f |
introduce a difference between active and passive refspecs, which
|
|
Packit Service |
20376f |
make `git_remote_download()` and `git_remote_fetch()` to take a list of
|
|
Packit Service |
20376f |
resfpecs to be the active list, similarly to how git fetch accepts a
|
|
Packit Service |
20376f |
list on the command-line.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The THREADSAFE option to build libgit2 with threading support has
|
|
Packit Service |
20376f |
been flipped to be on by default.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The remote object has learnt to prune remote-tracking branches. If
|
|
Packit Service |
20376f |
the remote is configured to do so, this will happen via
|
|
Packit Service |
20376f |
`git_remote_fetch()`. You can also call `git_remote_prune()` after
|
|
Packit Service |
20376f |
connecting or fetching to perform the prune.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### API additions
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Introduce `git_buf_text_is_binary()` and `git_buf_text_contains_nul()` for
|
|
Packit Service |
20376f |
consumers to perform binary detection on a git_buf.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_branch_upstream_remote()` has been introduced to provide the
|
|
Packit Service |
20376f |
branch.<name>.remote configuration value.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Introduce `git_describe_commit()` and `git_describe_workdir()` to provide
|
|
Packit Service |
20376f |
a description of the current commit (and working tree, respectively)
|
|
Packit Service |
20376f |
based on the nearest tag or reference
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Introduce `git_merge_bases()` and the `git_oidarray` type to expose all
|
|
Packit Service |
20376f |
merge bases between two commits.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Introduce `git_merge_bases_many()` to expose all merge bases between
|
|
Packit Service |
20376f |
multiple commits.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Introduce rebase functionality (using the merge algorithm only).
|
|
Packit Service |
20376f |
Introduce `git_rebase_init()` to begin a new rebase session,
|
|
Packit Service |
20376f |
`git_rebase_open()` to open an in-progress rebase session,
|
|
Packit Service |
20376f |
`git_rebase_commit()` to commit the current rebase operation,
|
|
Packit Service |
20376f |
`git_rebase_next()` to apply the next rebase operation,
|
|
Packit Service |
20376f |
`git_rebase_abort()` to abort an in-progress rebase and `git_rebase_finish()`
|
|
Packit Service |
20376f |
to complete a rebase operation.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Introduce `git_note_author()` and `git_note_committer()` to get the author
|
|
Packit Service |
20376f |
and committer information on a `git_note`, respectively.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* A factory function for ssh has been added which allows to change the
|
|
Packit Service |
20376f |
path of the programs to execute for receive-pack and upload-pack on
|
|
Packit Service |
20376f |
the server, `git_transport_ssh_with_paths()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The ssh transport supports asking the remote host for accepted
|
|
Packit Service |
20376f |
credential types as well as multiple challeges using a single
|
|
Packit Service |
20376f |
connection. This requires to know which username you want to connect
|
|
Packit Service |
20376f |
as, so this introduces the USERNAME credential type which the ssh
|
|
Packit Service |
20376f |
transport will use to ask for the username.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `GIT_EPEEL` error code has been introduced when we cannot peel a tag
|
|
Packit Service |
20376f |
to the requested object type; if the given object otherwise cannot be
|
|
Packit Service |
20376f |
peeled, `GIT_EINVALIDSPEC` is returned.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Introduce `GIT_REPOSITORY_INIT_RELATIVE_GITLINK` to use relative paths
|
|
Packit Service |
20376f |
when writing gitlinks, as is used by git core for submodules.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_prune()` has been added. See above for description.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Introduce reference transactions, which allow multiple references to
|
|
Packit Service |
20376f |
be locked at the same time and updates be queued. This also allows
|
|
Packit Service |
20376f |
us to safely update a reflog with arbitrary contents, as we need to
|
|
Packit Service |
20376f |
do for stash.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### API removals
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_supported_url()` and `git_remote_is_valid_url()` have been
|
|
Packit Service |
20376f |
removed as they have become essentially useless with rsync-style ssh paths.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_clone_into()` and `git_clone_local_into()` have been removed from the
|
|
Packit Service |
20376f |
public API in favour of `git_clone callbacks`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The option to ignore certificate errors via `git_remote_cert_check()`
|
|
Packit Service |
20376f |
is no longer present. Instead, `git_remote_callbacks` has gained a new
|
|
Packit Service |
20376f |
entry which lets the user perform their own certificate checks.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
### Breaking API changes
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_cherry_pick()` is now `git_cherrypick()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_submodule_update()` function was renamed to
|
|
Packit Service |
20376f |
`git_submodule_update_strategy()`. `git_submodule_update()` is now used to
|
|
Packit Service |
20376f |
provide functionalty similar to "git submodule update".
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_treebuilder_create()` was renamed to `git_treebuilder_new()` to better
|
|
Packit Service |
20376f |
reflect it being a constructor rather than something which writes to
|
|
Packit Service |
20376f |
disk.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_treebuilder_new()` (was `git_treebuilder_create()`) now takes a
|
|
Packit Service |
20376f |
repository so that it can query repository configuration.
|
|
Packit Service |
20376f |
Subsequently, `git_treebuilder_write()` no longer takes a repository.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_threads_init()` and `git_threads_shutdown()` have been renamed to
|
|
Packit Service |
20376f |
`git_libgit2_init()` and `git_libgit2_shutdown()` to better explain what
|
|
Packit Service |
20376f |
their purpose is, as it's grown to be more than just about threads.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_libgit2_init()` and `git_libgit2_shutdown()` now return the number of
|
|
Packit Service |
20376f |
initializations of the library, so consumers may schedule work on the
|
|
Packit Service |
20376f |
first initialization.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_transport_register()` function no longer takes a priority and takes
|
|
Packit Service |
20376f |
a URL scheme name (eg "http") instead of a prefix like "http://"
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_index_name_entrycount()` and `git_index_reuc_entrycount()` now
|
|
Packit Service |
20376f |
return size_t instead of unsigned int.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `context_lines` and `interhunk_lines` fields in `git_diff`_options are
|
|
Packit Service |
20376f |
now `uint32_t` instead of `uint16_t`. This allows to set them to `UINT_MAX`,
|
|
Packit Service |
20376f |
in effect asking for "infinite" context e.g. to iterate over all the
|
|
Packit Service |
20376f |
unmodified lines of a diff.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_status_file()` now takes an exact path. Use `git_status_list_new()` if
|
|
Packit Service |
20376f |
pathspec searching is needed.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_note_create()` has changed the position of the notes reference
|
|
Packit Service |
20376f |
name to match `git_note_remove()`.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* Rename `git_remote_load()` to `git_remote_lookup()` to bring it in line
|
|
Packit Service |
20376f |
with the rest of the lookup functions.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_rename()` now takes the repository and the remote's
|
|
Packit Service |
20376f |
current name. Accepting a remote indicates we want to change it,
|
|
Packit Service |
20376f |
which we only did partially. It is much clearer if we accept a name
|
|
Packit Service |
20376f |
and no loaded objects are changed.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_remote_delete()` now accepts the repository and the remote's name
|
|
Packit Service |
20376f |
instead of a loaded remote.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* `git_merge_head` is now `git_annotated_commit`, to better reflect its usage
|
|
Packit Service |
20376f |
for multiple functions (including rebase)
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_clone_options` struct no longer provides the `ignore_cert_errors` or
|
|
Packit Service |
20376f |
`remote_name` members for remote customization.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
Instead, the `git_clone_options` struct has two new members, `remote_cb` and
|
|
Packit Service |
20376f |
`remote_cb_payload`, which allow the caller to completely override the remote
|
|
Packit Service |
20376f |
creation process. If needed, the caller can use this callback to give their
|
|
Packit Service |
20376f |
remote a name other than the default (origin) or disable cert checking.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
The `remote_callbacks` member has been preserved for convenience, although it
|
|
Packit Service |
20376f |
is not used when a remote creation callback is supplied.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_clone`_options struct now provides `repository_cb` and
|
|
Packit Service |
20376f |
`repository_cb_payload` to allow the user to create a repository with
|
|
Packit Service |
20376f |
custom options.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_push` struct to perform a push has been replaced with
|
|
Packit Service |
20376f |
`git_remote_upload()`. The refspecs and options are passed as a
|
|
Packit Service |
20376f |
function argument. `git_push_update_tips()` is now also
|
|
Packit Service |
20376f |
`git_remote_update_tips()` and the callbacks are in the same struct as
|
|
Packit Service |
20376f |
the rest.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_remote_set_transport()` function now sets a transport factory function,
|
|
Packit Service |
20376f |
rather than a pre-existing transport instance.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* The `git_transport` structure definition has moved into the sys/transport.h
|
|
Packit Service |
20376f |
file.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
* libgit2 no longer automatically sets the OpenSSL locking
|
|
Packit Service |
20376f |
functions. This is not something which we can know to do. A
|
|
Packit Service |
20376f |
last-resort convenience function is provided in sys/openssl.h,
|
|
Packit Service |
20376f |
`git_openssl_set_locking()` which can be used to set the locking.
|