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

C# 哪种语言具有最好的Git API绑定?,c#,c,git,binding,C#,C,Git,Binding,我正在考虑构建一个与git密切相关的应用程序 是否有可用的语言绑定?如果有,哪些是最全面的 这是否意味着要使用裸机C 或者perl/python/php/C#是否有一组完整的绑定 谢谢 丹尼尔我不确定它是否是最好的,但是对于.net来说,它是否是最好的取决于你想要什么,从它的外观来看,你对C/C最满意。Git是用C写的,所以如果你想提高速度,也许你应该这样做。但是,如果您希望代码清晰且易于编写,GitSharp可能是一个更好的选择。您可以尝试不使用API。git被构造为一套不同抽象级别的实用程序

我正在考虑构建一个与git密切相关的应用程序

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

这是否意味着要使用裸机C

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

谢谢


丹尼尔

我不确定它是否是最好的,但是对于.net来说,它是否是最好的取决于你想要什么,从它的外观来看,你对C/C最满意。Git是用C写的,所以如果你想提高速度,也许你应该这样做。但是,如果您希望代码清晰且易于编写,GitSharp可能是一个更好的选择。

您可以尝试不使用API。git被构造为一套不同抽象级别的实用程序。您应该能够通过调用这些实用程序并处理它们的输出来构建一组全面的实用程序。许多高级git命令都是shell脚本或perl脚本,它们可以实现这一点,因此在git源代码中有很多示例可以用作示例

以下是一个很好的例子:

  • magit:用emacs lisp编写的emacs git接口

  • git gui:tcl,与git一起提供

  • gitk:tcl,也附带git

  • gitview:python,在contrib目录中附带git

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


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

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

    • 这是在Java中重新实现Git(Git插件和
    • 是一个Ruby库,用于以面向对象的方式从git存储库中提取信息,其中包括一个部分本地Ruby实现。例如由GitHub使用
    • 这是对C#for.NET和Mono中Git的重新实现,它遵循JGit wrt。功能
    • 这是Git文件格式和协议的纯Python读写实现
    • 是Git存储库的纯Perl接口(最初主要基于Grit)
    • 是“PHP中的git库”-纯PHP实现。作者用于eWiki
    • Monodevelop使用的JGit的.NET端口

    重新实现的问题在于,它们并不总是实现完整的功能,有时实现错误。另一方面,他们是本地人,执行良好的性能;它们的许可可能不同于Git的C(原始)实现,即GPLv2

  • Wrappers调用Git命令并将其包装成某种形式,适合于目标语言

    • 该模块使用git(并由它的一些命令使用)和用于Perl的包装git命令分发
    • 是一个JavaAPI,通过调用git命令提供对git存储库的访问
    • 是一个Python库,用于通过调用Git可执行文件和解析输出与Git存储库交互
    • 是git的Haskell包装器

    包装器的问题是速度可能很慢(它们需要分叉git进程),并且需要安装git才能工作

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

  • 最后还有到libgit2的绑定,这意味着可以通过一个可靠的API重新进入可链接库(这是谷歌2010年夏季代码项目)

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

    Libgit2是一个全新的项目;这是一项正在进行的工作,因此目前并非所有工作都已落实。有关详细信息,请参阅。


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

语言没有源代码管理绑定。是的,但是我的意思是应用程序有我可以调用的API吗?或者我需要自己用C写一些与git交互的东西吗?好的。。。所以,您正在寻找不同语言的GIT API绑定。是的,如果我不清楚,很抱歉。。现在将更改标题!thanksI不会推荐java;虽然JGit/EGit肯定正在积极开发中,但它们还远远不够全面。(上次我看,这太糟糕了,我认为它是有害的,鼓励某人使用EGIT而不是Git本身。)谢谢…Net更可取,你用过吗?怎么样?太好了。现在有人将最不可移植的VCS与最不可移植的语言框架相结合。丹尼尔:没什么大不了的,我已经下载过了,只是看了一下,但是看起来很简单@马特:如果你打算这样做,我建议你在C#和Git上使用忽略标记功能@马特·乔纳:你可能对.net有一点看法(尽管我怀疑它是最糟糕的),但真的,git不可移植吗?什么平台不工作?哈哈哈。。请不要用火焰战!尽管每个人都不愿意听到,但一大群大公司正在经营一家只支持微软的开发商店,并使用Visual Source碎纸机!唯一的原因是他们不会切换到git设置一个没有管理工具的中央服务器,这让他们感到紧张,他们没有分布式版本控制!啊,好的,好的。。不太喜欢C,但我学得很快,有点书呆子,我对objective-C有经验,它是C和一些附加组件,真的,我的C#技能是a