Подтвердить что ты не робот

GitSharp vs NGit

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

4b9b3361

Ответ 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.