GitSharp (at least, its Core) was a manual, line by line, port of JGit. Its development has currently been paused since August 2010. However, some products still rely on it (e.g. Git-dot-aspx).
NGit is an automated port of JGit. It keeps on being updated against JGit and continuously benefits from JGit improvements and bug fixes. NGit is currently used to bring Git features to MonoDevelop.
Performance wise, cloning a huge repository (Mono or Linux, for instance) with GitSharp was a long and painful experience. I haven't tried with NGit though.
Considering those facts, from a support/maintenance perspective, I would suggest you to use NGit over GitSharp.
EDIT:
GitSharp web site now states
GitSharp development is currently on hold because we believe that the libgit2 project and its C# bindings libgit2sharp are far more promising to work on.
I have used GitSharp a bit, and it was good enough even a year back. I think the activity on GitSharp is reduced, but I think it is a much better implementation. I don't like that NGit is an automated port from JGit to a large extent, including some of its dependencies ( GitSharp uses SharpSSH, whereas NGit uses NSch, a port of JSch ) . That will mean there can be some sub-optimal performance and other issues, but I haven't used NGit, so I cannot back my claim.
就我个人而言,我更喜欢 GitSharp,因为它提供了纯 .NET 实现。 NGit 半自动地移植了更大的库(JSch、Sharpen),但它仍然是纯 .NET。纯.NET dll (AnyCPU) 易于部署!!! libgit2sharp 只是 C 库的包装器,我们还必须部署 C 库。针对许多平台和体系结构(x86、x64、Windows、Linux)部署 C 库会比较麻烦
GitSharp is more high level, the low level part is implemented in GitSharp.Core GitSharp has .NET style, while NGit is too Javaish. Currently, commands such as Commit, Tag have not been implemented in GitSharp, while these ha ve been implemented in NGit.
Personally, I prefer GitSharp, as it provides a pure .NET implementation. NGit is semi-automatically ported with larger set of libraries (JSch, Sharpen) but it is still pure .NET. Pure .NET dlls (AnyCPU) ease deployment!!! libgit2sharp is just the wrapper for C library and we have to deploy the C library as well. Deployment for C libraries is more trouble to target many platforms and architectures (x86, x64, Windows, Linux)
Since GitSharp project is out of sync from upstream jgit, we have to switch to NGit which sync with latest jgit at regular interval. To make GitSharp project alive, large efforts are required.
The lower level NGit.dll can replace GitSharp.Core.dll The higher level GitSharp.dll can be ported to interface NGit.dll instead.
发布评论
评论(4)
GitSharp(至少是它的核心)是 JGit 的逐行移植手册。自 2010 年 8 月以来,它的开发目前已暂停。但是,一些产品仍然依赖它(例如 Git-dot -aspx)。
NGit 是 JGit 的自动化端口。它不断针对 JGit 进行更新,并不断受益于 JGit 的改进和错误修复。 NGit 目前用于将 Git 功能引入 MonoDevelop.
就性能而言,使用 GitSharp 克隆一个巨大的存储库(例如 Mono 或 Linux)是一次漫长而痛苦的经历。不过我还没有尝试过 NGit。
考虑到这些事实,从支持/维护的角度来看,我建议您使用 NGit 而不是 GitSharp。
编辑:
GitSharp 网站现在声明
GitSharp (at least, its Core) was a manual, line by line, port of JGit. Its development has currently been paused since August 2010. However, some products still rely on it (e.g. Git-dot-aspx).
NGit is an automated port of JGit. It keeps on being updated against JGit and continuously benefits from JGit improvements and bug fixes. NGit is currently used to bring Git features to MonoDevelop.
Performance wise, cloning a huge repository (Mono or Linux, for instance) with GitSharp was a long and painful experience. I haven't tried with NGit though.
Considering those facts, from a support/maintenance perspective, I would suggest you to use NGit over GitSharp.
EDIT:
GitSharp web site now states
我使用过一点 GitSharp,即使在一年前它也足够好了。我认为 GitSharp 上的活动减少了,但我认为这是一个更好的实现。我不喜欢 NGit 在很大程度上是 JGit 的自动化端口,包括它的一些依赖项(GitSharp 使用 SharpSSH,而 NGit 使用 NSch,JSch 的端口)。这意味着可能会有一些次优的性能和其他问题,但我没有使用过 NGit,所以我不能支持我的主张。
I have used GitSharp a bit, and it was good enough even a year back. I think the activity on GitSharp is reduced, but I think it is a much better implementation. I don't like that NGit is an automated port from JGit to a large extent, including some of its dependencies ( GitSharp uses SharpSSH, whereas NGit uses NSch, a port of JSch ) . That will mean there can be some sub-optimal performance and other issues, but I haven't used NGit, so I cannot back my claim.
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 is more high level, the low level part is implemented in GitSharp.Core
GitSharp has .NET style, while NGit is too Javaish.
Currently, commands such as Commit, Tag have not been implemented in GitSharp, while these ha ve been implemented in NGit.
Personally, I prefer GitSharp, as it provides a pure .NET implementation. NGit is semi-automatically ported with larger set of libraries (JSch, Sharpen) but it is still pure .NET. Pure .NET dlls (AnyCPU) ease deployment!!!
libgit2sharp is just the wrapper for C library and we have to deploy the C library as well. Deployment for C libraries is more trouble to target many platforms and architectures (x86, x64, Windows, Linux)
由于GitSharp项目与上游jgit不同步,我们必须切换到定期与最新jgit同步的NGit。要使 GitSharp 项目活跃起来,需要付出巨大的努力。
较低级别的NGit.dll可以替换GitSharp.Core.dll
可以将更高级别的 GitSharp.dll 移植到接口 NGit.dll。
Since GitSharp project is out of sync from upstream jgit, we have to switch to NGit which sync with latest jgit at regular interval. To make GitSharp project alive, large efforts are required.
The lower level NGit.dll can replace GitSharp.Core.dll
The higher level GitSharp.dll can be ported to interface NGit.dll instead.