Каково текущее состояние GitSharp и NGit, и какой из них лучше подходит для Git автоматизации от .NET?
GitSharp vs NGit
Ответ 1
-
GitSharp (по крайней мере, его Core) был ручным, строковым, портом JGit. Его разработка в настоящее время приостановлена с августа 2010 года. Однако некоторые продукты все еще полагаются на нее (например, Git-dot-aspx).
-
NGit - это автоматический порт JGit. Он продолжает обновляться с JGit и постоянно получает преимущества от улучшений JGit и исправлений ошибок. В настоящее время NGit используется для принести функции Git в MonoDevelop.
Производительность, клонирование огромного репозитория (например, Mono или Linux) с GitSharp - это долгий и болезненный опыт. Однако я не пробовал с помощью NGit.
Учитывая эти факты, с точки зрения поддержки/обслуживания, я предлагаю вам использовать NGit над GitSharp.
EDIT:
Веб-сайт GitSharp теперь сообщает
В настоящее время работает разработка GitSharp потому что мы считаем, что проект libgit2 и его привязки С# libgit2sharp гораздо более перспективны работайте.
Ответ 2
Я использовал GitSharp немного, и это было достаточно хорошо даже год назад. Я думаю, что активность на GitSharp сокращена, но я думаю, что это намного лучше. Мне не нравится, что NGit - это автоматический порт от JGit в значительной степени, включая некоторые из его зависимостей (GitSharp использует SharpSSH, тогда как NGit использует NSch, порт JSch). Это будет означать, что может быть какая-то субоптимальная производительность и другие проблемы, но я не использовал NGit, поэтому я не могу подтвердить свои претензии.
Ответ 3
GitSharp более высокий уровень, часть низкого уровня реализована в GitSharp.Core GitSharp имеет стиль .NET, в то время как NGit слишком Javaish. В настоящее время такие команды, как Commit, Tag, не реализованы в GitSharp, но они реализованы в NGit.
Лично я предпочитаю GitSharp, поскольку он обеспечивает чистую реализацию .NET. NGit полуавтоматически портируется с большим набором библиотек (JSch, Sharpen), но он по-прежнему чистый .NET. Чистые .NET DLL (AnyCPU) упрощают развертывание!!! libgit2sharp - это всего лишь оболочка для библиотеки C, и нам также нужно развернуть библиотеку C. Развертывание для библиотек C больше проблем для многих платформ и архитектур (x86, x64, Windows, Linux)
Ответ 4
Так как проект GitSharp не синхронизирован с восходящим jgit, нам нужно переключиться на NGit, который синхронизируется с последним jgit с регулярным интервалом. Чтобы проект GitSharp был жив, необходимы большие усилия.
Более низкий уровень NGit.dll может заменить файл GitSharp.Core.dll Более высокий уровень GitSharp.dll можно портировать вместо интерфейса NGit.dll.