GitSharp和NGit的当前状态是什么,哪一个更适合.NET的Git自动化?
-
GitSharp(至少,它的核心)是一个手动的,逐行的,JGit的端口。自2010年8月以来,其开发目前已暂停。但是,有些产品仍然依赖于它(例如Git-dot-aspx)。
-
NGit是JGit的自动化端口。它不断针对JGit进行更新,并不断受益于JGit的改进和错误修复。NGit目前用于将Git功能引入MonoDevelop。
在性能方面,使用 GitSharp 克隆一个巨大的存储库(例如 Mono 或 Linux)是一段漫长而痛苦的经历。不过我还没有尝试过NGit。
考虑到这些事实,从支持/维护的角度来看,我建议你使用NGit而不是GitSharp。
编辑:
GitSharp网站现在声明
GitSharp 开发正在进行中 持有,因为我们相信 libgit2 项目及其 C# 绑定 libgit2sharp更有前途 继续工作。
我用过一些GitSharp,即使在一年前它也足够好了。我认为 GitSharp 上的活动减少了,但我认为这是一个更好的实现。我不喜欢NGit在很大程度上是JGit的自动化端口,包括它的一些依赖项(GitSharp使用SharpSSH,而NGit使用NSch,JSch的端口)。这意味着可能存在一些次优性能和其他问题,但我没有使用 NGit,所以我无法支持我的说法。
GitSharp 是更高级的,低级部分在 GitSharp.Core 中实现GitSharp有.NET风格,而NGit太Java化了。目前,诸如Commit,Tag之类的命令尚未在GitSharp中实现,而这些命令已在NGit中实现。
就个人而言,我更喜欢GitSharp,因为它提供了一个纯的.NET实现。NGit是半自动移植的,带有更大的库集(JSch,Sharpen),但它仍然是纯.NET。纯.NET dlls(AnyCPU)简化了部署!!libgit2sharp 只是 C 库的包装器,我们还必须部署 C 库。C库的部署对于针对许多平台和体系结构(x86,x64,Windows,Linux)来说更麻烦
由于 GitSharp 项目与上游 jgit 不同步,我们必须切换到定期与最新 jgit 同步的 NGit。为了使 GitSharp 项目充满活力,需要付出巨大的努力。
较低级别的NGit.dll可以取代GitSharp.Core.dll更高级别的 GitSharp.dll 可以移植到接口 NGit.dll 代替。