GitSharp против NGit

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

4 ответа

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

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

С точки зрения производительности, клонирование огромного хранилища (например, Mono или Linux) с GitSharp было долгим и мучительным опытом. Я не пробовал с NGit, хотя.

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

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

Сайт GitSharp теперь заявляет

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

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

GitSharp более высокого уровня, часть низкого уровня реализована в GitSharp. Ядро 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)

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

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

Другие вопросы по тегам