{"action":"created","issue":{"url":"https://api.github.com/repos/magit/magit/issues/2959","repository_url":"https://api.github.com/repos/magit/magit","labels_url":"https://api.github.com/repos/magit/magit/issues/2959/labels{/name}","comments_url":"https://api.github.com/repos/magit/magit/issues/2959/comments","events_url":"https://api.github.com/repos/magit/magit/issues/2959/events","html_url":"https://github.com/magit/magit/issues/2959","id":200374620,"node_id":"MDU6SXNzdWUyMDAzNzQ2MjA=","number":2959,"title":"Implement an Elisp binding for libgit2","user":{"login":"tarsius","id":25046,"node_id":"MDQ6VXNlcjI1MDQ2","avatar_url":"https://avatars2.githubusercontent.com/u/25046?v=4","gravatar_id":"","url":"https://api.github.com/users/tarsius","html_url":"https://github.com/tarsius","followers_url":"https://api.github.com/users/tarsius/followers","following_url":"https://api.github.com/users/tarsius/following{/other_user}","gists_url":"https://api.github.com/users/tarsius/gists{/gist_id}","starred_url":"https://api.github.com/users/tarsius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tarsius/subscriptions","organizations_url":"https://api.github.com/users/tarsius/orgs","repos_url":"https://api.github.com/users/tarsius/repos","events_url":"https://api.github.com/users/tarsius/events{/privacy}","received_events_url":"https://api.github.com/users/tarsius/received_events","type":"User","site_admin":false},"labels":[{"id":774891235,"node_id":"MDU6TGFiZWw3NzQ4OTEyMzU=","url":"https://api.github.com/repos/magit/magit/labels/abstraction","name":"abstraction","color":"c2e0c6","default":false},{"id":33046,"node_id":"MDU6TGFiZWwzMzA0Ng==","url":"https://api.github.com/repos/magit/magit/labels/feature%20request","name":"feature request","color":"30BB00","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/magit/magit/milestones/27","html_url":"https://github.com/magit/magit/milestone/27","labels_url":"https://api.github.com/repos/magit/magit/milestones/27/labels","id":3227060,"node_id":"MDk6TWlsZXN0b25lMzIyNzA2MA==","number":27,"title":"2.17.0","description":"libgit, log, save, mouse","creator":{"login":"tarsius","id":25046,"node_id":"MDQ6VXNlcjI1MDQ2","avatar_url":"https://avatars2.githubusercontent.com/u/25046?v=4","gravatar_id":"","url":"https://api.github.com/users/tarsius","html_url":"https://github.com/tarsius","followers_url":"https://api.github.com/users/tarsius/followers","following_url":"https://api.github.com/users/tarsius/following{/other_user}","gists_url":"https://api.github.com/users/tarsius/gists{/gist_id}","starred_url":"https://api.github.com/users/tarsius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tarsius/subscriptions","organizations_url":"https://api.github.com/users/tarsius/orgs","repos_url":"https://api.github.com/users/tarsius/repos","events_url":"https://api.github.com/users/tarsius/events{/privacy}","received_events_url":"https://api.github.com/users/tarsius/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2018-03-29T00:55:10Z","updated_at":"2018-03-29T02:28:30Z","due_on":"2018-09-07T07:00:00Z","closed_at":null},"comments":36,"created_at":"2017-01-12T14:03:44Z","updated_at":"2018-05-31T23:57:53Z","closed_at":null,"author_association":"MEMBER","body":"*This description was taken from #2956. I intend to replace it with a more in-depth description at a later time.*\r\n\r\nMagit is slow and part of fixing that involves the use of [`libgit2`](https://libgit2.github.com/), \"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.\"  Unfortunately nobody has written that for Elisp yet and since improving performance is a top priority now, I'll to it.\r\n\r\nThis will be named just `libgit.el` (or `libgit2.el`) and be pretty basic, i.e. just expose the functions provided by `libgit2` to Elisp.\r\n\r\n---\r\n\r\nOlder discussions: #2539, https://github.com/magit/magit/issues/2442#issuecomment-165093660, https://github.com/magit/magit/issues/1327#issuecomment-39678570. (Yes, this goes back a while, but note that doing this is only even possible since Emacs v25.1, which was released in September 2016.)\r\n\r\n---\r\n\r\nSome resources:\r\n\r\n- In depth documentation https://phst.github.io/emacs-modules\r\n- Another list of resources https://github.com/emacs-pe/emacs-modules\r\n- A simple module, also with links http://kitchingroup.cheme.cmu.edu/blog/2017/07/08/Adding-numerical-methods-to-emacs-with-dynamic-modules\r\n- Emacs, Dynamic Modules, and Joysticks http://nullprogram.com/blog/2016/11/05/\r\n\r\nAnd of course...\r\n\r\n- libgit2 API https://libgit2.github.com/libgit2/#HEAD"},"comment":{"url":"https://api.github.com/repos/magit/magit/issues/comments/393718522","html_url":"https://github.com/magit/magit/issues/2959#issuecomment-393718522","issue_url":"https://api.github.com/repos/magit/magit/issues/2959","id":393718522,"node_id":"MDEyOklzc3VlQ29tbWVudDM5MzcxODUyMg==","user":{"login":"phil-s","id":295371,"node_id":"MDQ6VXNlcjI5NTM3MQ==","avatar_url":"https://avatars0.githubusercontent.com/u/295371?v=4","gravatar_id":"","url":"https://api.github.com/users/phil-s","html_url":"https://github.com/phil-s","followers_url":"https://api.github.com/users/phil-s/followers","following_url":"https://api.github.com/users/phil-s/following{/other_user}","gists_url":"https://api.github.com/users/phil-s/gists{/gist_id}","starred_url":"https://api.github.com/users/phil-s/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phil-s/subscriptions","organizations_url":"https://api.github.com/users/phil-s/orgs","repos_url":"https://api.github.com/users/phil-s/repos","events_url":"https://api.github.com/users/phil-s/events{/privacy}","received_events_url":"https://api.github.com/users/phil-s/received_events","type":"User","site_admin":false},"created_at":"2018-05-31T23:57:53Z","updated_at":"2018-05-31T23:57:53Z","author_association":"CONTRIBUTOR","body":"@vermiculus I believe it's dependent only on these three specific commands having consistent output when invoked from a given directory:\r\n\r\n* `git rev-parse --show-toplevel`\r\n* `git rev-parse --show-cdup`\r\n* `git rev-parse --git-dir`\r\n\r\nThe git hashes aren't relevant, and the elisp hashes are of `default-directory`.\r\n\r\nI presume the cache would break if a submodule was introduced into a previously-cached directory."}}
{"actor":{"display_login":"phil-s"}}