GitSharp против NGit - PullRequest
       28

GitSharp против NGit

18 голосов
/ 13 мая 2011

Каково текущее состояние GitSharp и NGit и какое из них лучше подходит для автоматизации Git из .NET?

Ответы [ 4 ]

19 голосов
/ 14 мая 2011
  • GitSharp (по крайней мере, его ядро) был ручным, построчным портом JGit.Его разработка в настоящее время приостановлена ​​с августа 2010 года. Однако некоторые продукты по-прежнему полагаются на него (например, Git-dot-aspx ).

  • NGit - автоматизированный портиз JGit.Он продолжает обновляться с JGit и постоянно получает выгоду от улучшений JGit и исправлений ошибок.NGit в настоящее время используется для переноса функций Git в MonoDevelop .

В отношении производительности, клонирование огромного хранилища (например, Mono или Linux) с GitSharp было долгим иболезненный опыт.Хотя я не пробовал с NGit.

Учитывая эти факты, с точки зрения поддержки / обслуживания, я бы предложил вам использовать NGit вместо GitSharp.

РЕДАКТИРОВАТЬ:

На веб-сайте GitSharp теперь говорится

Разработка GitSharp в настоящее время приостановлена, поскольку мы считаем, что проект libgit2 и его привязки C # libgit2sharp гораздо более перспективны для работывкл.

4 голосов
/ 13 мая 2011

Я немного использовал GitSharp, и это было достаточно хорошо даже год назад.Я думаю, что активность на GitSharp снижена, но я думаю, что это намного лучшая реализация.Мне не нравится, что NGit в значительной степени является автоматическим портом от JGit, включая некоторые его зависимости (GitSharp использует SharpSSH, тогда как NGit использует NSch, порт JSch).Это будет означать, что может быть некоторая неоптимальная производительность и другие проблемы, но я не использовал NGit, поэтому не могу подтвердить свои претензии.

3 голосов
/ 05 ноября 2011

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)

0 голосов
/ 19 июля 2012

Поскольку проект GitSharp не синхронизирован с вышестоящим jgit, мы должны переключиться на NGit, который синхронизируется с последним jgit через регулярные промежутки времени. Чтобы оживить проект GitSharp, требуются большие усилия.

Нижний уровень NGit.dll может заменить GitSharp.Core.dll Вместо этого GitSharp.dll более высокого уровня можно перенести на интерфейс NGit.dll.

...