GitSharp vs NGit

GitSharp和NGit的当前状态是什么,哪一个更适合.NET的Git自动化?

  • GitSharp(至少,它的核心)是JGit的手动逐行端口。 它的开发目前已从2010年8月开始暂停。但是,一些产品仍然依赖它(例如Git-dot-aspx )。

  • NGit是JGit的自动端口。 它不断针对JGit进行更新,并不断受益于JGit改进和错误修复。 NGit目前用于将Gitfunction引入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太Javaish。 目前,在GitSharp中尚未实现诸如Commit,Tag之类的命令,而这些命令已经在NGit中实现。

就个人而言,我更喜欢GitSharp,因为它提供了纯粹的.NET实现。 NGit是半自动移植的,具有更大的库(JSch,Sharpen),但它仍然是纯.NET。 纯.NET dll(AnyCPU)轻松部署!!! libgit2sharp只是C库的包装器,我们也必须部署C库。 针对许多平台和体系结构(x86,x64,Windows,Linux)部署C库更麻烦

由于GitSharp项目与上游jgit不同步,我们必须切换到NGit,它会定期与最新的jgit同步。 为了使GitSharp项目活跃起来,需要付出巨大努力。

较低级别的NGit.dll可以取代GitSharp.Core.dll更高级别的GitSharp.dll可以移植到接口NGit.dll。