Я смотрю на создание приложения с тяжелыми связями с git..
Доступны ли языковые привязки, и если да, то какие из них наиболее полные?
Будет ли это означать переход на Bare Metal C?
Или у perl/python/php/С# есть набор полных привязок?
Спасибо
Daniel
Я смотрю на создание приложения с тяжелыми связями с git..
Доступны ли языковые привязки, и если да, то какие из них наиболее полные?
Будет ли это означать переход на Bare Metal C?
Или у perl/python/php/С# есть набор полных привязок?
Спасибо
Daniel
Существует три разных подхода к использованию Git на некоторых языках программирования:
Reimplementation из Git на другом языке. Вот что делают следующие проекты:
Проблема с reimplementation заключается в том, что они не всегда реализуют полную функциональность, а иногда и реализуют ее неправильно. С другой стороны, они являются родными, обеспечивают хорошую производительность; они могут быть лицензированы иначе, чем C (оригинальная) реализация Git, которая является GPLv2.
Wrappers, которые вызывают команды Git и обертывают результат каким-то образом, подходящим для целевого языка.
Проблема с обертками заключается в том, что они могут быть медленными (им требуется форматирование процесса Git), и для их установки требуется Git.
Обратите внимание также, что сам Git имеет высокую степень написания сценариев (например, с помощью сценариев оболочки), благодаря тому, что помимо команд верхнего уровня, предназначенных для конечного пользователя (фарфора), он также предоставляет команды низкого уровня, предназначенные для сценариев (сантехника). < ш >
Наконец, есть привязки к libgit2, что означает, чтобы быть повторно подключаемой библиотекой с твердым API (был проектом Google Summer of Code 2010).
Libgit2 - совершенно новый проект; это незавершенное производство, поэтому не все реализовано во время существования. Подробнее см. главная страница libgit2.
Все это можно найти на странице InterfacesFrontendsAndTools на Git Wiki
Вы можете попробовать не использовать 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.
Зависит от того, что вы хотите, по своему усмотрению с C/С#. Git написан на C, поэтому, если вы хотите скорость, возможно, вам стоит пойти с этим. Но если вы хотите, чтобы четкость кода и простота написания GitSharp, вероятно, была лучшим вариантом.
Я не уверен, что это лучший, но для .net есть GitSharp