{"thread":{"id":"30562","subject":"[Announce] libgit2 v0.17.0","startedAt":"2012-05-19T00:00:02Z","lastAt":"2012-05-24T01:57:24Z","messageCount":4,"participants":["Vicent Marti","dag@cray.com","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"191702","messageId":"CAFFjANQ_kfRc8LhZD4nxeYmRML6i5dQEskUv3Caz7GmnvZi2Jw@mail.gmail.com","threadId":"30562","inReplyTo":null,"subject":"[Announce] libgit2 v0.17.0","fromName":"Vicent Marti","fromEmail":"vicent@github.com","sentAt":"2012-05-19T00:00:02Z","receivedAt":"2012-05-19T00:00:02Z","isPatch":false,"sender":{"key":"vicent@github.com","avatar":"https://gravatar.com/avatar/9d57a2b1e3137bf84342ac1dfdf1cde409b86e8fda5397d05f40f17fa5b84a63?d=mp&s=160"},"body":"Hello everyone,\n\nA new libgit2 release is here. This one is huge (most new features to\ndate). Check out the diff API. It's shiny.\n\nWe're nearing the 1.0.0 milestone, and things are moving much faster\nnow. Stay tuned for more features and more projects using the library.\n\nThe release has been tagged at:\n\n https://github.com/libgit2/libgit2/tree/v0.17.0\n\nA dist package can be found at:\n\n https://github.com/downloads/libgit2/libgit2/libgit2-0.17.0.tar.gz\n\nUpdated documentation can be found at:\n\n http://libgit2.github.com/libgit2/\n\nThe full change log follows after the message.\n\nCheers,\nVicent\n\n=======================\n\nlibgit2 v0.17.0 \"Lord of Diffstruction\"\n\nWelcome to yet another libgit2 release, this one being the\nbiggest we've shipped so far. Highlights on this release\ninclude diff, branches, notes and submodules support. The new\ndiff API is shiny and powerful. Check it out.\n\nApologies, one more time, to all the early adopters for the\nbreaking API changes. We've been iterating on the error\nhandling for the library until we reached its current state,\nwhich we believe it's significantly more usable both for normal\nusers and for developers of bindings to other languages.\nAlso, we've renamed a few legacy calls to ensure that the whole\nexternal API uses a consistent naming scheme.\n\nAs always, check the API docs for the full list of new API calls\nand backwards-incompatible changes.\n\n\thttp://libgit2.github.com/libgit2/\n\nChangelog of new features follows:\n\nAttributes:\n\t- Added function macros to check attribute values instead of having\n\tto manually compare them\n\t- Added support for choosing the attribute loading order (workdir files\n\tvs index) and to skip the systems' default `.gitattributes`\n\t- Fixed issues when fetching attribute data on bare repositories\n\nBlob:\n\t- Added support for creating blobs from any file on disk (not\n\trestricted to the repository's working directory)\n\t- Aded support for smudge filters when writing blobs to the ODB\n\t\t- So far only CRLF normalization is available\n\nBranches:\n\t- Added a high-level branch API:\n\t\t- git_branch_create\n\t\t- git_branch_delete\n\t\t- git_branch_list\n\t\t- git_branch_move\n\nCommit:\n\t- Commit messages are now filtered to match Git rules (stripping\n\tcomments and adding proper whitespacing rules)\n\nConfig:\n\t- Added support for setting and getting multivars\n\t- Added `git_config_get_mapped` to map the value of a config\n\tvariable based on its defaults\n\nDiff:\n\t- Added full diff API:\n\t\t- tree to tree\n\t\t- index to tree\n\t\t- workdir to index\n\t\t- workdir to tree\n\t\t- blob to blob\n\n\t- Added helper functions to print the diffs as valid patchfiles\n\nError handling:\n\t- New design for the error handling API, taking into consideration\n\tthe requirements of dynamic languages\n\nIndexer:\n\t- Added streaming packfile indexer\n\nMerge:\n\t- Added support for finding the merge base between two commits\n\nNotes:\n\t- Full git-notes support:\n\t\t- git_note_read\n\t\t- git_note_message/git_note_oid\n\t\t- git_note_create\n\t\t- git_note_remove\n\t\t- git_note_free\n\t\t- git_note_foreach\n\nReferences:\n\t- Added `git_reference_name_to_oid` helper to resolve\n\ta reference to its final OID\n\n\t- Added `git_reference_cmp` to compare two references with\n\ta stable order\n\nRemotes:\n\t- Added support for writing and saving remotes\n\t\t- `git_remote_add`\n\t\t- `git_remote_save`\n\t\t- Setters for all the attributes of a remote\n\t- Switched remote download to the new streaming packfile indexer\n\t- Fixed fetch on HTTP and Git under Windows\n\t- Added `git_remote_supported_url` helper to check if a protocol\n\tcan be accessed by the library\n\t- Added `git_remote_list`\n\nRepository:\n\t- Made `git_repository_open` smarter when finding the `.git` folder.\n\t- Added `git_repository_open_ext` with extra options when\n\topening a repository\n\nRevwalk:\n\t- Added support for pushing/hiding several references through a glob\n\t- Added helper to push/hide the current HEAD to the walker\n\t- Added helper to push/hide a single reference to the walker\n\nStatus:\n\t- Greatly improved Status implementation using the new `diff` code\n\tas a backend\n\nSubmodules:\n\t- Added a partial submodules API to get information about a\n\tsubmodule and list all the submodules in a repository\n\t\t- git_submodule_foreach\n\t\t- git_submodule_lookup\n\nTag:\n\t- Added `git_tag_peel` helper to peel a tag to its pointed object\n\t- Tag messages are now filtered to match Git rules (stripping comments\n\tand adding proper whitespacing rules)\n\nTree:\n\t- Killed the old `git_tree_diff` API, which is replaced by the\n\tnew diff code.\n\nSigned-off-by: Vicent Marti <tanoku@gmail.com>\n"},{"id":"191993","messageId":"nngy5oi3o37.fsf@transit.us.cray.com","threadId":"30562","inReplyTo":"CAFFjANQ_kfRc8LhZD4nxeYmRML6i5dQEskUv3Caz7GmnvZi2Jw@mail.gmail.com","subject":"Re: [Announce] libgit2 v0.17.0","fromName":"","fromEmail":"dag@cray.com","sentAt":"2012-05-23T15:37:48Z","receivedAt":"2012-05-23T15:37:48Z","isPatch":false,"sender":{"key":"dag@cray.com","avatar":null},"body":"Vicent Marti <vicent@github.com> writes:\n\n> Hello everyone,\n>\n> A new libgit2 release is here. This one is huge (most new features to\n> date). Check out the diff API. It's shiny.\n\nThis is cool.  I've wanted this for a while.  How do you ensure that the\noperation of libgit2 matches that of git proper?  Is there any plan to\nslowly convert git commands over to a libgit2 implementation?\n\n                             -Dave\n"},{"id":"192005","messageId":"7v8vgi263h.fsf@alter.siamese.dyndns.org","threadId":"30562","inReplyTo":"nngy5oi3o37.fsf@transit.us.cray.com","subject":"Re: [Announce] libgit2 v0.17.0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-05-23T16:51:46Z","receivedAt":"2012-05-23T16:51:46Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"<dag@cray.com> writes:\n\n> Vicent Marti <vicent@github.com> writes:\n>\n>> Hello everyone,\n>>\n>> A new libgit2 release is here. This one is huge (most new features to\n>> date). Check out the diff API. It's shiny.\n>\n> This is cool.  I've wanted this for a while.  How do you ensure that the\n> operation of libgit2 matches that of git proper?  Is there any plan to\n> slowly convert git commands over to a libgit2 implementation?\n\nThere is no \"plan\" in the \"concrete timeline and implementation strategy\"\nsense, but it is what any sane person would hope is a good longer-term\ndirection.\n\nBut it is also a bit of a chicken and an egg problem.\n\nI am hoping that the library would become solid enough to allow us to\nstart attempting such an experiment some day, but at the same time, I know\nthat that \"some day\" is not in a very near future, after having seen at\n$DAYJOB that a certain internal tool linked with a version of libgit2\nbreaking user's trees from time to time, bugs against the internal tool\ngetting filed and then some of them getting fixed at libgit2 level, either\nby upstreaming fix or by updating to newer snapshot of libgit2.\n"},{"id":"192036","messageId":"CAFFjANSyRbm=0Q+EFXL8HGJnr=4CBW6phzeEjaCb26wVf4EaXg@mail.gmail.com","threadId":"30562","inReplyTo":"7v8vgi263h.fsf@alter.siamese.dyndns.org","subject":"Re: [Announce] libgit2 v0.17.0","fromName":"Vicent Marti","fromEmail":"vicent@github.com","sentAt":"2012-05-24T01:57:24Z","receivedAt":"2012-05-24T01:57:24Z","isPatch":false,"sender":{"key":"vicent@github.com","avatar":"https://gravatar.com/avatar/9d57a2b1e3137bf84342ac1dfdf1cde409b86e8fda5397d05f40f17fa5b84a63?d=mp&s=160"},"body":"On Wed, May 23, 2012 at 6:51 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> I am hoping that the library would become solid enough to allow us to\n> start attempting such an experiment some day, but at the same time, I know\n> that that \"some day\" is not in a very near future, after having seen at\n> $DAYJOB that a certain internal tool linked with a version of libgit2\n> breaking user's trees from time to time, bugs against the internal tool\n> getting filed and then some of them getting fixed at libgit2 level, either\n> by upstreaming fix or by updating to newer snapshot of libgit2.\n\nIf you're building internal tools with libgit2 and encountering\nissues, maybe somebody from $DAYJOB could spend some of his 20% time\nin throwing us a hand pushing the library forward. That way $DAYJOB\nand the whole community would benefit.\n\nLove,\nVicent\n"}]}