libgit2 is a portable, pure C implementation of the Git core methods provided as a re-entrant linkable library with a solid API, allowing you to write native speed custom Git applications in any language which supports C bindings.
- 100% Cross-Platform - Linux, FreeBSD, OpenBSD, Mac OS X, iOS, Amiga, MinGW and fully native Windows.
- Zero Dependencies - Builds out of the box with no dependencies. Works in embedded devices and iOS.
- C89 - Written with portability in mind. Builds in GCC, Clang and MSVC.
- Permissive Licensing - GPLv2 with Linking Exception. Link with open and proprietary software, no strings attached.
SDK for Apple
Custom filters can now be registered with wildcard attributes, for
example filter=*. Consumers should examine the attributes parameter
of the check function for details.
Symlinks are now followed when locking a file, which can be
necessary when multiple worktrees share a base repository.
You can now set your own user-agent to be sent for HTTP requests by
using the GIT_OPT_SET_USER_AGENT with git_libgit2_opts().
You can set custom HTTP header fields to be sent along with requests
by passing them in the fetch and push options.
Tree objects are now assumed to be sorted. If a tree is not correctly formed, it will give bad results. This is the git approach and cuts a significant amount of time when reading the trees.