哪种语言有最好的Git API绑定?

Dan*_*ton 41 c c# git binding

我正在寻找建立一个与git密切联系的应用程序.

是否有可用的语言绑定,如果有,哪些是最全面的?

这是否意味着去Bare Metal C?

或者perl/python/php/C#有一组完整的绑定吗?

谢谢

丹尼尔

Jak*_*ski 76

在某些编程语言中使用Git有三种不同的方法:

  • 不同语言重新实现 Git.这就是以下项目的作用:

    • JGit,它是Java中Git的重新实现(由 EGit, Eclipse Git插件和 Gerrit Code Review使用),
    • Grit是Ruby库,用于以面向对象的方式从git存储库中提取信息,其中包括部分本机Ruby实现.例如由GitHub使用.
    • GitSharp是在C#for .NET和Mono中重新完成Git,并且遵循JGit wrt.功能,
    • Dulwich是Git文件格式和协议的纯Python读写实现.
    • Git :: PurePerl是Git存储库的纯Perl接口(最初主要基于Grit).
    • Glip是"PHP中的git库" - 纯PHP实现.由其作者用于eWiki.
    • Monodevelop使用的JGit的NGit .NET端口


    重新实现的问题在于它们并不总是实现完整功能,有时候实现错误.另一方面,他们是原生的,实现良好的表现; 它们的许可可能与Git的C(原始)实现不同,后者是GPLv2.

  • 包装其称之为Git命令,并在某种包装造成的,合适的目标语言.

    • 所述Git.pm模块与GIT分布(和使用它的一些命令的),GIT中::包装GIT中::库为Perl涡卷GIT中的命令.
    • JavaGit是一个Java API,通过调用git命令提供对git存储库的访问.
    • GitPython是一个Python库,用于通过调用Git可执行文件和解析输出来与Git存储库交互.
    • hs-libgit是git的Haskell包装器.


    包装器的问题在于它们可能很慢(它们需要分配git进程),并且它们需要安装git才能工作.

    还要注意git本身是高度可编写脚本的(例如使用shell脚本),这要归功于除了针对最终用户(瓷器)的更高级别命令之外,它还提供用于编写​​脚本(管道)的低级命令.

  • 最后还有对libgit2的绑定,这意味着它是具有可靠API的可重入链接库(Google Summer of Code 2010项目).


    Libgit2是一个相当新的项目; 它正在进行中,所以并非所有事情都在实施时实施.有关详细信息,请参见libgit2主页.

所有这些信息都可以在Git Wiki 上的InterfacesFrontendsAndTools页面找到

  • 值得注意的是,自编写本文以来的4年多时间里,GitSharp开发人员已暂停该项目以使用libgit2Sharp."GitSharp是一个非常有用且稳定的库,有几个项目用来与git存储库进行交互.想要查看Demo(见下文)!GitSharp开发目前处于暂停状态,因为我们认为libgit2项目及其C#绑定libgit2sharp更有希望继续努力." [GitSharp](http://www.eqqon.com/index.php/GitSharp) (2认同)