GitSharp против NGit
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.