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

На каком языке есть лучшие привязки API Git?

Я смотрю на создание приложения с тяжелыми связями с git..

Доступны ли языковые привязки, и если да, то какие из них наиболее полные?

Будет ли это означать переход на Bare Metal C?

Или у perl/python/php/С# есть набор полных привязок?

Спасибо

Daniel

4b9b3361

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

Ответ 2

Вы можете попробовать не использовать API. git структурирован как набор утилит на разных уровнях абстракции. Вы должны иметь возможность создавать полный набор утилит, которые работают, вызывая эти утилиты и обрабатывая их выходные данные. Многие из команд верхнего уровня git представляют собой сценарии оболочки или perl-скрипты, которые делают именно это, поэтому у вас есть множество примеров в источнике git, чтобы использовать их в качестве примеров.

Хорошие примеры для начала:

  • magit: git интерфейс для emacs, написанный в emacs lisp

  • git gui: tcl, поставляется с git

  • gitk: tcl, также поставляется с git

  • gitview: python, поставляется с git в каталоге contrib.

  • tig: C, история текстового режима browswer для git.

Ответ 3

Зависит от того, что вы хотите, по своему усмотрению с C/С#. Git написан на C, поэтому, если вы хотите скорость, возможно, вам стоит пойти с этим. Но если вы хотите, чтобы четкость кода и простота написания GitSharp, вероятно, была лучшим вариантом.

Ответ 4

Я не уверен, что это лучший, но для .net есть GitSharp