哪种语言有最好的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