Libgit2 Versions Save

A cross-platform, linkable library implementation of Git that you can use in your application.

v1.8.0

1 month ago

v1.8

This is release v1.8.0, "Das Fliegende Klassenzimmer". This release includes optional, experimental support for invoking OpenSSH to fetch and push, an easier mechanism to perform the default behavior of git commit, and has many improvements for worktrees. This release also includes many other new features and bugfixes.

Major changes

  • Executable SSH (OpenSSH) support libgit2 can now invoke the command-line OpenSSH to fetch from and push to remotes over SSH. This support takes the place of libssh2 support. To use it, configure libgit2 with cmake -DUSE_SSH=exec, and please report any problems that you discover. By @ethomson in https://github.com/libgit2/libgit2/pull/6617

  • Simplified commit creation The git_commit_create_from_stage API was introduced to allow users to better emulate the behavior of git commit without needing to provide unnecessary information. The current state of the index is committed to the current branch. By @ethomson in https://github.com/libgit2/libgit2/pull/6716

  • Worktree improvements A number of worktree improvements have been made for better compatibility with core git. First, libgit2 now understands per-worktree references, thanks to @csware in https://github.com/libgit2/libgit2/pull/6387. Worktree-specific configuration is now supported, thanks to @vermiculus in https://github.com/libgit2/libgit2/pull/6202. And improved compatibility with git worktree add is now supported, thanks to @herrerog in https://github.com/libgit2/libgit2/pull/5319.

Breaking changes

  • Adding WORKTREE configuration level (ABI breaking change) To support worktree configurations at the appropriate level (higher priority than local configuration, but lower priority than app-specific configuration), the GIT_CONFIG_LEVEL_WORKTREE level was introduced at priority 6. GIT_CONFIG_LEVEL_APP now begins at priority 7.

  • Changes to git_config_entry (ABI breaking change) The git_config_entry structure now contains information about the backend_type and origin_path. The unused payload value has been removed.

  • git_push_options includes remote push options (ABI breaking change) The git_push_options structure now contains a value for remote push options.

Other changes

New features

Bug fixes

Build and CI improvements

Documentation improvements

Platform compatibility fixes

Git compatibility fixes

Dependency updates

New Contributors

Full Changelog: https://github.com/libgit2/libgit2/compare/v1.7.0...v1.8.0

v1.7.2

3 months ago

🔒 This is a security release with multiple changes.

  • A bug in git_revparse_single is fixed that could have caused the function to enter an infinite loop given well-crafted inputs, potentially causing a Denial of Service attack in the calling application. This fixes CVE-2024-24575, which was discovered by researchers at Amazon AWS.

  • A bug in git_index_add is fixed that could have caused the function to corrupt its heap and possibly lead to arbitrary code execution. This fixes CVE-2024-24577, which was discovered by researchers at Amazon AWS.

  • A bug in the smart transport negotiation could have caused an out-of-bounds read when a remote server did not advertise capabilities.

The libgit2 project thanks the researchers and outreach team at AWS Security for finding the git_index_add and git_revparse_single bugs, and providing details and reproduction steps during their responsible disclosure.

All users of the v1.7 release line are recommended to upgrade.

v1.6.5

3 months ago

🔒 This is a security release with multiple changes.

  • A bug in git_revparse_single is fixed that could have caused the function to enter an infinite loop given well-crafted inputs, potentially causing a Denial of Service attack in the calling application. This fixes CVE-2024-24575, which was discovered by researchers at Amazon AWS.

  • A bug in git_index_add is fixed that could have caused the function to corrupt its heap and possibly lead to arbitrary code execution. This fixes CVE-2024-24577, which was discovered by researchers at Amazon AWS.

  • A bug in the smart transport negotiation could have caused an out-of-bounds read when a remote server did not advertise capabilities.

The libgit2 project thanks the researchers and outreach team at AWS Security for finding the git_index_add and git_revparse_single bugs, and providing details and reproduction steps during their responsible disclosure.

All users of the v1.6 release line are recommended to upgrade.

v1.7.1

9 months ago

v1.7.1

What's Changed

Bug fixes

Compatibility improvements

New Contributors

Full Changelog: https://github.com/libgit2/libgit2/compare/v1.7.0...v1.7.1

v1.7.0

10 months ago

This is release v1.7.0, "Kleine Raupe Nimmersatt". This release adds shallow clone support, completes the experimental SHA256 support, adds Schannel support for Windows, and includes many other newj features and bugfixes.

Major changes

  • Shallow clone support libgit2 now supports shallow clone and shallow repositories, thanks to a significant investment from many community members -- hundreds of commits by many contributors.

  • SHA256 support libgit2 should now support SHA256 repositories using the extensions.objectFormat configuration option when the library is built with EXPERIMENTAL_SHA256=ON. Users are encouraged to begin testing their applications with this option and provide bug reports and feedback. This is a breaking API change; SHA256 support will be enabled by default in libgit2 v2.0.

  • Schannel and SSPI for Windows libgit2 now supports the Windows Schannel and SSPI APIs for HTTPS support on Windows, when configured with USE_HTTPS=Schannel. Setting this option will not use the existing WinHTTP support, but will use libgit2's standard HTTP client stack with Windows TLS primitives. Windows users are encouraged to begin testing their applications with this option and provide bug reports and feedback. This will be enabled by default in a future version of libgit2.

Breaking changes

  • Simplify custom pluggable allocator (System API / ABI breaking change) The git_allocator structure (configurable by the GIT_OPT_SET_ALLOCATOR option) now only contains gmalloc, grealloc and gfree members. This simplifies both the work needed by an implementer and allows more flexibility and correctness in libgit2 itself, especially during out-of-memory situations and errors during bootstrapping.

Other changes

New features

Performance improvements

Bug fixes

Build and CI improvements

Documentation improvements

Dependency upgrades

New Contributors

Full Changelog: https://github.com/libgit2/libgit2/compare/v1.6.3...v1.7.0

v1.6.4

1 year ago

What's Changed

Bug fixes

Full Changelog: https://github.com/libgit2/libgit2/compare/v1.6.3...v1.6.4

v1.6.3

1 year ago

What's Changed

Bug fixes

Build and CI improvements

New Contributors

Full Changelog: https://github.com/libgit2/libgit2/compare/v1.6.2...v1.6.3

v1.6.2

1 year ago

What's Changed

Bug fixes

Full Changelog: https://github.com/libgit2/libgit2/compare/v1.6.1...v1.6.2

v1.6.1

1 year ago

This is release v1.6.1, "Hubbeliges Krokodil". This release adds experimental SHA256 support and includes many new features and bugfixes. This release replaces libgit2 v1.6.0, which did not correctly update its version number(s).

What's Changed

New features

  • Support for bare repositories with SHA256 support (experimental) by @ethomson in https://github.com/libgit2/libgit2/pull/6191 You can configure experimental SHA256 support in libgit2 with cmake -DEXPERIMENTAL_SHA256=ON during project setup. This is useful for considering future integrations, work on clients, and work on language bindings. At present, working with bare repositories should largely work, including remote operations. But many pieces of functionality - including working with the index - are not yet supported. As a result, libgit2 with SHA256 support should not be used in production or released with package distribution.

  • Support the notion of a home directory separately from global configuration directory by @ethomson in https://github.com/libgit2/libgit2/pull/6455 and https://github.com/libgit2/libgit2/pull/6456 Callers and language bindings can now configure the home directory that libgit2 uses for file lookups (eg, the .ssh directory). This configuration is separate from the git global configuration path.

  • stash: partial stash specific files by @gitkraken-jacobw in https://github.com/libgit2/libgit2/pull/6330 A stash can be created with only specific files, using a pathspec. This is similar to the git stash push command.

  • push: revparse refspec source, so you can push things that are not refs by @sven-of-cord in https://github.com/libgit2/libgit2/pull/6362 Pushes can be performed using refspecs instead of only references.

  • Support OpenSSL3 by @ethomson in https://github.com/libgit2/libgit2/pull/6464 and https://github.com/libgit2/libgit2/pull/6471 OpenSSL 3 is now supported, both when compiled directly and dynamically loaded.

Bug fixes

Security fixes

Code cleanups

Build and CI improvements

Documentation improvements

New Contributors

v1.5.2

1 year ago

This is a bugfix release to improve the SSH key handling functionality that was introduced in v1.5.1.

  • libgit2 can now read the known_hosts file on Windows.
  • libgit2 will now examine all keys for a particular host in the known_hosts file for matches, to support remote hosts with multiple key types.

All users of the v1.5 release line are recommended to upgrade.