Я думаю, что клиент, разработанный с использованием стандартного протокола git, рассмотрит эту проблему.
Это было бы вернуться к децентрализованной модели Git (где каждая операция является локальной и быстрым) к централизованной один (где вам нужно получить доступ к серверу для выполнения операции.
Большинство команд (logs, diff, commit, ...) имеют смысл, когда у вас есть полное репо.
Если сервер git предоставляет данные, я хочу разработать клиент, который помещает эти A ПИ вне бизнеса.
Там нет "мерзавец сервер", только слушатели (HTTPD или SSHD), которые затем вызвать git-receive-pack
и git-upload-pack
(в случае smart protocol).
(От «Reimplementing “git clone” in Haskell from the bottom up»)
Именно поэтому API разработан на верхней часть этих слушателей, для того, чтобы подвергнуть эти команды (локального к репозиториям управляемых хостинг-сервер).
Одна альтернатива Я знаю это gitolite site local commands.
Gitolite - это уровень аутентификации (называемый слушателем https или ssh и проверяющий право пользователя на доступ к репо).
Он может делегировать некоторые команды, которые будут выполняться «локально» на сервере:
Основная цель gitolite, чтобы предотвратить вас от оболочки. Но есть команды, которые вам часто нужно запускать на сервере (т. Е. Не может быть сделано, нажав что-то на репо).
Чтобы включить это, gitolite позволяет администратору настраивать сценарии в специальном каталоге, который затем могут выполнять пользователи. Gitolite поставляется с набором рабочих сценариев, которые ваш администратор может установить или может использовать как отправную точку для своего, если он захочет.
Вспомните эти команды как эквивалентные командам COMMAND_DIR в man git-shell.
Возможное расширение: см «Announcing GitTorrent: A Decentralized GitHub»
Это пример получения от сервера что-то Git-то, чем просто пакет файлов.
Использование другого протокола может сделать обратное мерзавец клон что-то другое, чем полный репозиторий.
git clone gittorrent://github.com/cjb/recursers
Git на самом деле имеет расширяемый механизм для сетевых протоколов, построенных так, как это работает в том, что мой мерзавце clone line превращается в «запустить команду git-remote-gittorrent
и передать ей URL-адрес в качестве аргумента».
Зачем вам нужно дистанционно вести журнал? Просто выберите изменения из удаленного репо, а затем запишите локально. http://stackoverflow.com/questions/13941976/commit-history-on-remote-repository – gman
Я не хочу клонировать/извлекать репо локально. Я надеюсь, что в этом есть смысл. –
@gman, чтобы прояснить комментарий, было бы неэффективно клонировать репозиторий, чтобы я мог получить журнал. Мне нужен только журнал, поэтому я хочу именно это. Существует ряд проприетарных API, которые выполняют это (github api, gitlab api, hulu api и т. Д.). Если сервер git предоставляет данные, я хочу разработать клиент, который выведет эти API из бизнеса. –