I am looking at building an application with heavy ties to git..
Are there language bindings available and if so which are the most comprehensive?
Would it mean going to Bare Metal C?
Or does perl / python / php / C# have a set of full bindings?
Thanks
Daniel
There are three different approaches with respect to using Git from within some programming language:
Reimplementation of Git in different language. That is what the following projects do:
The problem with reimplementations is that they do not always implement the full functionality, and sometimes implement it wrong. On the other hand they are native, implement good performance; they may be licensed differently than C (original) implementation of Git, which is GPLv2.
Wrappers which call Git commands and wrap result it in some kind, suitably for target language.
The problem with wrappers is that they can be slow (they require forking a git process), and that they require git to be installed to work.
Note also that git itself is highly scriptable (e.g. using shell scripts), thanks to the fact that beside higher level commands meant for end user (porcelain) it also provides low level commands meant for scripting (plumbing).
Finally there are bindings to libgit2, which means to be re-entrant linkable library with a solid API (was Google Summer of Code 2010 project).
Libgit2 is quite new project; it is work in progress, so not everything is implemented at the time of being. See libgit2 homepage for details.
All this information can be found at InterfacesFrontendsAndTools page on Git Wiki