c# .net git gitsharp ngit

c# - GitSharp vs NGit



.net (4)

¿Cuál es el estado actual de GitSharp y NGit y cuál es el más adecuado para la automatización de Git desde .NET?


Dado que el proyecto GitSharp no está sincronizado con el jgit ascendente, tenemos que cambiar a NGit, que se sincroniza con el último jgit a intervalos regulares. Para hacer que el proyecto GitSharp esté vivo, se requieren grandes esfuerzos.

El nivel inferior NGit.dll puede reemplazar a GitSharp.Core.dll El nivel superior GitSharp.dll se puede portar a la interfaz NGit.dll en su lugar.


GitSharp tiene un nivel más alto, la parte de bajo nivel se implementa en GitSharp. Centro GitSharp tiene un estilo .NET, mientras que NGit es demasiado Java. Actualmente, los comandos como Commit, Tag no se han implementado en GitSharp, mientras que estos se han implementado en NGit.

Personalmente, prefiero GitSharp, ya que proporciona una implementación pura de .NET. NGit es portado de forma semiautomática con un conjunto más grande de bibliotecas (JSch, Sharpen) pero aún es puro .NET. Pure .NET dlls (AnyCPU) facilita la implementación! libgit2sharp es solo el contenedor de la biblioteca C y también tenemos que implementar la biblioteca C. El despliegue para las bibliotecas de C es más problemático para apuntar a muchas plataformas y arquitecturas (x86, x64, Windows, Linux)


He usado GitSharp un poco, y fue lo suficientemente bueno incluso hace un año. Creo que la actividad en GitSharp se reduce, pero creo que es una implementación mucho mejor. No me gusta que NGit sea un puerto automatizado de JGit en gran medida, incluidas algunas de sus dependencias (GitSharp usa SharpSSH, mientras que NGit usa NSch, un puerto de JSch). Eso significará que puede haber algún rendimiento subóptimo y otros problemas, pero no he usado NGit, por lo que no puedo respaldar mi reclamo.


  • GitSharp (al menos, su Núcleo) era un puerto manual, línea por línea, de JGit. Su desarrollo se ha detenido actualmente desde agosto de 2010. Sin embargo, algunos productos aún dependen de él (por ejemplo, Git-dot-aspx ).

  • NGit es un puerto automatizado de JGit. Se sigue actualizando contra JGit y se beneficia continuamente de las mejoras de JGit y las correcciones de errores. NGit se usa actualmente para llevar las funciones de Git a MonoDevelop .

En cuanto al rendimiento, la clonación de un gran repositorio (Mono o Linux, por ejemplo) con GitSharp fue una experiencia larga y dolorosa. Aunque no he probado con NGit.

Teniendo en cuenta esos hechos, desde una perspectiva de soporte / mantenimiento, le sugiero que utilice NGit sobre GitSharp.

EDITAR:

El sitio web de GitSharp ahora dice

El desarrollo de GitSharp está actualmente en suspenso porque creemos que el proyecto libgit2 y sus enlaces C # libgit2sharp son mucho más prometedores para trabajar.