Ответ 1
Существует три разных подхода к использованию Git на некоторых языках программирования:
-
Reimplementation из Git на другом языке. Вот что делают следующие проекты:
- JGit, который является повторной реализацией Git в Java (используется среди других EGit, плагин Eclipse Git и Обзор кода Gerrit),
- Grit - это библиотека Ruby для извлечения информации из репозитория Git объектно-ориентированным способом, который включает в себя частичную реализацию Ruby Ruby. Используется, например. от GitHub.
- GitSharp, который является переназначением Git в С# для .NET и Mono, и который следует за JGit wrt. функциональность,
- Dulwich, который является чистым-Python процессом чтения и записи форматов и протоколов Git.
- Git::PurePerl - это чистый интерфейс Perl для репозиториев Git (в основном он основан на Grit, изначально).
- Glip - это "git библиотека в PHP" - чистая реализация PHP. Используется его автором для eWiki.
- NGit Порт .NET JGit, используемый Monodevelop
Проблема с reimplementation заключается в том, что они не всегда реализуют полную функциональность, а иногда и реализуют ее неправильно. С другой стороны, они являются родными, обеспечивают хорошую производительность; они могут быть лицензированы иначе, чем C (оригинальная) реализация Git, которая является GPLv2. -
Wrappers, которые вызывают команды Git и обертывают результат каким-то образом, подходящим для целевого языка.
- Модуль Git.pm, распространяемый с помощью Git (и используемый некоторыми его командами), Git::Wrapper и Git::Repository wrap Git команды для Perl.
- JavaGit - это Java API, который обеспечивает доступ к репозиториям Git посредством вызова команд Git.
- GitPython - это библиотека Python, используемая для взаимодействия с репозиториями Git, путем вызова исполняемых файлов Git и синтаксического анализа.
- hs-libgit является оболочкой Haskell для git.
Проблема с обертками заключается в том, что они могут быть медленными (им требуется форматирование процесса Git), и для их установки требуется Git.Обратите внимание также, что сам Git имеет высокую степень написания сценариев (например, с помощью сценариев оболочки), благодаря тому, что помимо команд верхнего уровня, предназначенных для конечного пользователя (фарфора), он также предоставляет команды низкого уровня, предназначенные для сценариев (сантехника). < ш >
-
Наконец, есть привязки к libgit2, что означает, чтобы быть повторно подключаемой библиотекой с твердым API (был проектом Google Summer of Code 2010).
- libgit2 сам является переносимой, чистой реализацией C.
- Rugged - привязки Ruby.
- php-git - привязки PHP.
- luagit2 - привязки Lua.
- GitForDelphi - привязки Delphi.
- libgit2sharp - привязки .NET.
- pygit2 - привязки Python.
- Geef - это простой Erlang NIF, который предоставляет некоторые библиотечные функции libgit2 для Erlang. Monodevelop использует порт .NET для JGit
Libgit2 - совершенно новый проект; это незавершенное производство, поэтому не все реализовано во время существования. Подробнее см. главная страница libgit2.
Все это можно найти на странице InterfacesFrontendsAndTools на Git Wiki