The new Nodegit maintainer


This post was originally published in 2013
It may contain stale & outdated information. Or it may have grown more awesome with age, like the author.

Some months ago I was invited to become a maintainer of and drive future development for the excellent nodegit module. Before this I had spent a week trialling and discarding all but nodegit as I struggled to find a Node.js module that would allow me to work with Git repositories programmatically, asynchronously, and predictably. Nodegit did these things, so I fixed some issues and submitted a pull request. And then, history.

What is nodegit?

Nodegit provides asynchronous native bindings to libgit2, allowing developers to easily access and modify git repositories with Node.js.

Diving into the deep

It wasn’t immediately apparent to me at all how nodegit was put together. This was due solely to my lack of relevant knowledge. It boils down to this: C++/V8 classes wrap the libgit2 C library, which are compiled into a native module that is itself wrapped with JavaScript, resulting in a consistent asynchronous interface to Git repositories.

Everything bit Git and JavaScript were new to me, so it took some time to familiarise myself with the rest. The libgit2 documentation is excellent, but I had a lot of trouble grokking the C++/V8 components. Certain members of the Node.js community (#node.js on freenode) were immensely patient and helpful to me here. Konstantin Käfer‘s presentation, “node.js extensions with C++ and V8” was very helpful also.

After grokking the combination of tools required to help improve the module, with the help of more discussion with the community, I settled on a consistent structure for the module, and set about implementing it. You can learn more about the here: nodegit.

I feel the project is at a stable point, and it will soon be time to start adding features. I’m excited and keen to see it become the module for working with Git repositories in Node.js.

Do you use Git programmatically in any of your projects? If so, what tool do you use to achieve this?

Nodegit-Index (20130410)

No comments | Trackback