Tag v0.16.0

libgit2 v0.16.0 "Dutch Fries" This lovely and much delayed release of libgit2 ships from the cold city of Brussels, which is currently hosting FOSDEM 2012. There's been plenty of changes since the latest stable release, here's a full summary: - Git Attributes support (see git2/attr.h) There is now support to efficiently parse and retrieve information from `.gitattribute` files in a repository. Note that this information is not yet used e.g. when checking out files. - .gitignore support Likewise, all the operations that are affected by `.gitignore` files now take into account the global, user and local ignores when skipping the relevant files. - Cleanup of the object ownership semantics The ownership semantics for all repository subparts (index, odb, config files, etc) has been redesigned. All these objects are now reference counted, and can be hot-swapped in the middle of execution, allowing for instance to add a working directory and an index to a repository that was previously opened as bare, or to change the source of the ODB objects after initialization. Consequently, the repository API has been simplified to remove all the `_openX` calls that allowed setting these subparts *before* initialization. - git_index_read_tree() Git trees can now be read into the index. - More reflog functionality The reference log has been optimized, and new API calls to rename and delete the logs for a reference have been added. - Rewrite of the References code with explicit ownership semantics The references code has been mostly rewritten to take into account the cases where another Git application was modifying a repository's references while the Library was running. References are now explicitly loaded and free'd by the user, and they may be reloaded in the middle of execution if the user suspects that their values may have changed on disk. Despite the new ownership semantics, the references API stays the same. - Simplified the Remotes API Some of the more complex Remote calls have been refactored into higher level ones, to facilitate the usual `fetch` workflow of a repository. - Greatly improved thread-safety The library no longer has race conditions when loading objects from the same ODB and different threads at the same time. There's now full TLS support, even for error codes. When the library is built with `THREADSAFE=1`, the threading support must be globally initialized before it can be used (see `git_threads_init()`) - Tree walking API A new API can recursively traverse trees and subtrees issuing callbacks for every single entry. - Tree diff API There is basic support for diff'ing an index against two trees. - Improved windows support The Library is now codepage aware under Windows32: new API calls allow the user to set the default codepage for the OS in order to avoid strange Unicode errors.

Browse

Commit 242a1cea
Author Vicent Martí
Date 2012-02-05T16:29:12