{"thread":{"id":"27319","subject":"[ANNOUNCE] libgit2 v0.12.0","startedAt":"2011-05-10T22:12:46Z","lastAt":"2011-05-10T22:28:36Z","messageCount":2,"participants":["Vicent Marti","Sverre Rabbelier"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"167633","messageId":"BANLkTi=NesUc=9eZp7SapkpZ2MkdgPCZHg@mail.gmail.com","threadId":"27319","inReplyTo":null,"subject":"[ANNOUNCE] libgit2 v0.12.0","fromName":"Vicent Marti","fromEmail":"vicent@github.com","sentAt":"2011-05-10T22:12:46Z","receivedAt":"2011-05-10T22:12:46Z","isPatch":false,"sender":{"key":"vicent@github.com","avatar":"https://gravatar.com/avatar/9d57a2b1e3137bf84342ac1dfdf1cde409b86e8fda5397d05f40f17fa5b84a63?d=mp&s=160"},"body":"Hello everyone,\n\nas thoroughly requested, and after much delay, here's the new minor\nlibgit2 release.\n\nThe release has been tagged at:\n\n    https://github.com/libgit2/libgit2/tree/v0.12.0\n\nA dist package can be found at:\n\n    https://github.com/downloads/libgit2/libgit2/libgit2-0.12.0.tar.gz\n\nThe full change log follows after the message.\n\nThanks for your time,\nVicent\n\n=========================\n\nlibgit2 v0.12.0 \"absolutely no reason\"\n\nHey, welcome to yet another minor libgit2 release. Sorry for the delay from\nthe last one. As you'll see the changelog is quite extensive -- hopefully from\nnow on we'll stick to more frequent minor releases.\n\nTogether with the usual bugfixes, here's a list of the new key features:\n\n* Distfiles\n\n\tThis version comes with proper distfiles as requested in #131. These are\n\tavailable in the Downloads section of the GitHub project.\n\n* Error handling\n\n\tA new error handling API has been implemented that allows the library to\n\treturn detailed error messages together with the generic error codes. We\n\thope this will be a great when wrapping and integrating the library\n\n\tNew external method to get the last detailed error message:\n\n\t\t+ git_lasterror(void)\n\n\tThe old `git_strerror` still exists, but will be deprecated in the future\n\tas soon as every method in the library returns a valid error message.\n\n\tThe task of writing error messages for every method is quite daunting.\n\tWe appreciate pull requests with more error messages. Check the new error\n\thandling documentation in the following commit:\n\n\thttps://github.com/libgit2/libgit2/commit/fa59f18d0ddbbb98d45e33934fb0efc3e2bf1557\n\n* Redis backend\n\n\tWe now have a Redis backend courtesy of Dmitry Kovega. Just like the\n\tSQLite backend, this allows the library to store Git objects in a Redis\n\tkey-value store.\n\n\tThe backend requires the `hiredis` library. Use `--with-redis` when\n\tbuilding libgit2 to enable building the backend if `hiredis` is available.\n\n* Commits\n\n\tNew methods to access tree and parent data as a raw OID value\n\tinstead of forcing a repository lookup\n\n\t\t+ git_commit_tree_oid(git_commit *commit)\n\t\t+ git_commit_parent_oid(git_commit *commit, unsigned int n)\n\n* Index\n\n\tThe `git_index_add` method has been split into 4 different calls\n\twhich allow for appending and replacing in-memory entries and on-disk\n\tfiles to the index.\n\n\t\t+ git_index_add(git_index *index, const char *path, int stage)\n\t\t+ git_index_add2(git_index *index, const git_index_entry *source_entry)\n\t\t+ git_index_append(git_index *index, const char *path, int stage)\n\t\t+ git_index_append2(git_index *index, const git_index_entry *source_entry)\n\n\tIndex entries can now also be efficiently removed from the index:\n\n\t\t+ git_index_remove(git_index *index, int position)\n\n* References\n\n\tMethods to force the creation and renaming of references, even if those already\n\texist on the repository.\n\n\t\t+ git_reference_create_symbolic_f(git_reference **ref_out,\ngit_repository *repo,\n\t\t\t\tconst char *name, const char *target)\n\t\t+ git_reference_create_oid_f(git_reference **ref_out, git_repository *repo,\n\t\t\t\tconst char *name, const git_oid *id)\n\t\t+ git_reference_rename_f(git_reference *ref, const char *new_name)\n\n* Repository\n\n\tNew auxiliary methods with repository information\n\n\t\t+ git_repository_is_empty(git_repository *repo)\n\t\t+ git_repository_path(git_repository *repo)\n\t\t+ git_repository_workdir(git_repository *repo)\n\n* Signatures\n\n\tNew method to create a signature with the current date/time\n\n\t\t+ git_signature_now(const char *name, const char *email)\n\n* Tags\n\n\tSeveral wrappers to automate tag creation.\n\n\t\t+ git_tag_create_frombuffer(git_oid *oid, git_repository *repo,\n\t\t\t\tconst char *buffer)\n\t\t+ git_tag_create_f(git_oid *oid, git_repository *repo,\n\t\t\t\tconst char *tag_name, const git_oid *target,\n\t\t\t\tgit_otype target_type, const git_signature *tagger,\n\t\t\t\tconst char *message);\n\t\t+ git_tag_create_fo(git_oid *oid, git_repository *repo,\n\t\t\t\tconst char *tag_name, const git_object *target,\n\t\t\t\tconst git_signature *tagger, const char *message)\n\n\tNew functionality to delete and list tags in a repository without\n\thaving to resort to the `references` API.\n\n\t\t+ git_tag_delete(git_repository *repo, const char *tag_name)\n\n\t\t+ git_tag_list(git_strarray *tag_names, git_repository *repo)\n\n* Trees\n\n\tAll instances of `git_tree_entry` are now returned and handled\n\tas constant, to remind the user that these opaque types are not\n\tsupposed to be manually free'd.\n\n\tThe `git_tree_entry_2object` method now takes a `git_repository`\n\targument which defines in which repository the resolved object\n\tshould be looked up. (It is expected to be the same repository\n\tthat contains the parent `git_tree` for the entry).\n\n\t\t+ git_tree_entry_2object(git_object **object_out, git_repository *repo,\n\t\t\t\tconst git_tree_entry *entry)\n\n\tNew opaque type `git_treebuilder` with functionality to create and\n\twrite trees on memory\n\n\t\t+ git_treebuilder_create(git_treebuilder **builder_p, const git_tree *source)\n\t\t+ git_treebuilder_clear(git_treebuilder *bld)\n\t\t+ git_treebuilder_free(git_treebuilder *bld)\n\t\t+ git_treebuilder_get(git_treebuilder *bld, const char *filename)\n\t\t+ git_treebuilder_insert(git_tree_entry **entry_out, git_treebuilder *bld,\n\t\t\t\tconst char *filename, const git_oid *id, unsigned int attributes)\n\t\t+ git_treebuilder_remove(git_treebuilder *bld, const char *filename)\n\t\t+ git_treebuilder_filter(git_treebuilder *bld,\n\t\t\t\tint (*filter)(const git_tree_entry *, void *), void *payload)\n\t\t+ git_treebuilder_write(git_oid *oid, git_repository *repo,\ngit_treebuilder *bld)\n\n\tNew method to write an index file as a tree to the ODB.\n\n\t\t+ git_tree_create_fromindex(git_oid *oid, git_index *index)\n\nThanks to the usual guility parties that make this this happen, to\nall the new contributors who are starting to submit pull requests, and\nto the bindings developers who have to keep up with our shit.\n\nFeedback and questions welcome on libgit2@librelist.org\n\nSigned-off-by: Vicent Marti <tanoku@gmail.com>\n"},{"id":"167639","messageId":"BANLkTik_eGj4Vu4Ki5vBo4OACbWySMB_YQ@mail.gmail.com","threadId":"27319","inReplyTo":"BANLkTi=NesUc=9eZp7SapkpZ2MkdgPCZHg@mail.gmail.com","subject":"Re: [ANNOUNCE] libgit2 v0.12.0","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2011-05-10T22:28:36Z","receivedAt":"2011-05-10T22:28:36Z","isPatch":false,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"Heya,\n\nOn Wed, May 11, 2011 at 00:12, Vicent Marti <vicent@github.com> wrote:\n> as thoroughly requested, and after much delay, here's the new minor\n> libgit2 release.\n\nCool! I like the crossposting of at least the announces to give the\nproject some more visibility in git@vger. Keep up the good work! :)\n\n-- \nCheers,\n\nSverre Rabbelier\n"}]}