4 回答
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 的一个端口)。这意味着可能会有一些次优的性能和其他问题,但我没有使用 NGi,所以我不能支持我的主张。
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 不同步,我们必须切换到定期与最新 jgit 同步的 NGit。要使 GitSharp 项目活跃起来,需要付出巨大的努力。
较低级别的NGit.dll 可以替换GitSharp.Core.dll 较高级别的GitSharp.dll 可以移植到接口NGit.dll 中。