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

我正在build设一个应用程序与git ..

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

这是否意味着去裸金属C?

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

谢谢

丹尼尔

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

  • 重新实现不同语言的Git。 以下项目就是这样做的:

    • JGit是Git在Java中的重新实现( EGit , Eclipse Git插件和Gerrit Code Review使用的 )
    • Grit是Ruby库,用于以面向对象的方式从git存储库中提取信息,其中包括部分原生的Ruby实现。 例如由GitHub使用。
    • GitSharp是C#for .NET和Mono中的Git Remplemantation,它跟随JGit wrt。 function,
    • Dulwich是Git文件格式和协议的纯Python读写实现。
    • Git :: PurePerl是Git仓库的纯粹Perl接口(最初主要基于Grit)。
    • Glip是“PHP中的git库” – 纯粹的PHP实现。 由其作者使用eWiki。
    • Monodevelop使用的JGit的NGit .NET端口

    重新实现的问题是,它们并不总是实现完整的function,有时实施错误。 另一方面,他们是本土的,执行好的performance; 他们的授权可能与GPL(GPL)的C(原始)实现不同。

  • 调用Git命令并包装的包装器会以某种方式结果,适用于目标语言。

    • Git.pm模块分布于git(并由其一些命令使用), Git :: Wrapper和Git :: Repository为Perl包装git命令。
    • JavaGit是一个Java API,通过调用git命令来提供对git存储库的访问。
    • GitPython是一个Python库,用于通过调用Git可执行文件和parsing输出来与Git存储库进行交互。
    • hs-libgit是git的Haskell包装器。

    包装的问题是,它们可能会很慢(他们需要分配一个git进程),并且他们需要安装git来工作。

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

  • 最后是绑定到libgit2 ,这意味着可重入的可链接库与一个坚实的API(是谷歌Summer of Code 2010项目)。

    • libgit2本身是一个可移植的纯C实现。
    • 坚固 – Ruby绑定。
    • php-git – PHP绑定。
    • luagit2 – Lua绑定。
    • GitForDelphi – Delphi绑定。
    • libgit2sharp – .NET绑定。
    • pygit2 – Python绑定。
    • Geef是一个简单的Erlang NIF,向Erlang公开了一些libgit2库函数。 Monodevelop为JGit使用.NET端口

    Libgit2是一个相当新的项目; 这是在进行中的工作,所以不是所有的事情都是在实施的时候实施的。 有关详细信息,请参阅libgit2主页 。

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

您可以尝试不使用API​​。 git被构造成一套在不同抽象层次上的实用程序。 您应该能够build立一套全面的实用程序,通过调用这些实用程序并处理其输出来工作。 许多高级别的git命令都是shell脚本或perl脚本,所以你可以在git源代码中使用大量的例子作为例子。

开始的好例子:

  • magit:用于emacs lisp的emacs的git界面

  • git gui:tcl,自带git

  • gitk:tcl,还附带了git

  • gitview:python,在contrib目录下有git。

  • tig:C,git的文本模式历史浏览器。

取决于你想要什么,看起来你最喜欢C / C#。 Git是用C编写的,所以如果你想要速度,那么也许你应该去做。 但是,如果你想要代码清晰和易于编写GitSharp可能是一个更好的select。

我不知道这是否是最好的,但.net有GitSharp