Spec-Zone.ru › Git

git-remote-ext

Имя

git-remote-ext — мост для интеллектуальной передачи данных во внешнюю команду.

Синтаксис

git remote add <nick> "ext::<command>[ <arguments>…​]"

Описание

Этот помощник удалённого доступа использует указанный <command> для подключения к удалённому серверу Git.

Данные, записанные в стандартный ввод указанной <command> команды, предполагается отправлять на сервер git://, git-upload-pack, git-receive-pack или git-upload-archive (в зависимости от ситуации), а данные, считанные из стандартного вывода <command>, предполагается получать от той же службы.

Команда и аргументы разделены неэкранированным пробелом.

Следующие последовательности имеют специальное значение:

'% '

Буквальный пробел в команде или аргументе.

%%

Буквальный знак процента.

%s

Заменяется именем (receive-pack, upload-pack или upload-archive) службы, которую Git хочет вызвать.

%S

Заменяется полным именем (git-receive-pack, git-upload-pack или git-upload-archive) службы, которую Git хочет вызвать.

%G (должно быть первыми символами в аргументе)

Этот аргумент не будет передан <command>. Вместо этого он заставит помощник начать с отправки запросов службы git:// на удалённую сторону со значением поля service, установленным в соответствующее значение, а поле repository — остальной частью аргумента. По умолчанию такие запросы не отправляются.

Это полезно, если к удалённой стороне git:// серверу осуществляется доступ через какой-то туннель.

%V (должно быть первыми символами в аргументе)

Этот аргумент не будет передан <command>. Вместо этого он устанавливает поле vhost в запросе службы git:// (значение — остальная часть аргумента). По умолчанию vhost в таком запросе не отправляется (если отправляется).

Переменные окружения

GIT_TRANSLOOP_DEBUG

При установке выводит отладочную информацию о различных операциях чтения/записи.

Переменные окружения, передаваемые команде

GIT_EXT_SERVICE

Устанавливается в полное имя (git-upload-pack и т.д.) службы, которую помощник должен вызвать.

GIT_EXT_SERVICE_NOPREFIX

Устанавливается в полное имя (upload-pack и т.д.) службы, которую помощник должен вызвать.

Примеры

Этот помощник удалённого доступа прозрачно используется Git при использовании команд, таких как "git fetch <URL>", "git clone <URL>", , "git push <URL>" или "git remote add <nick> <URL>", где <URL> начинается с ext::. Примеры:

"ext::ssh -i /home/foo/.ssh/somekey user@host.example %S foo/repo"

Как host.example:foo/repo, но использует /home/foo/.ssh/somekey в качестве пары ключей и user в качестве пользователя на удалённой стороне. Это избавляет от необходимости редактировать .ssh/config.

"ext::socat -t3600 - ABSTRACT-CONNECT:/git-server %G/somerepo"

Представляет репозиторий с путём /somerepo, доступный по протоколу git по адресу абстрактного пространства имён /git-server.

"ext::git-server-alias foo %G/repo"

Представляет репозиторий с путём /repo, к которому осуществляется доступ с помощью программы-помощника "git-server-alias foo". Путь к репозиторию и тип запроса не передаются в командной строке, а как часть потока протокола, как обычно с протоколом git://.

"ext::git-server-alias foo %G/repo %Vfoo"

Представляет репозиторий с путём /repo, к которому осуществляется доступ с помощью программы-помощника "git-server-alias foo". Имя хоста удалённого сервера, передаваемое в потоке протокола, будет "foo" (это позволяет нескольким виртуальным серверам Git использовать общий адрес уровня связи).

"ext::git-server-alias foo %G/repo% with% spaces %Vfoo"

Представляет репозиторий с путём /repo with spaces , к которому осуществляется доступ с помощью программы-помощника "git-server-alias foo". Имя хоста удалённого сервера, передаваемое в потоке протокола, будет "foo" (это позволяет нескольким виртуальным серверам Git использовать общий адрес уровня связи).

"ext::git-ssl foo.example /bar"

Представляет репозиторий, к которому осуществляется доступ с помощью программы-помощника "git-ssl foo.example /bar". Тип запроса может определяться помощником с помощью переменных окружения (см. выше).

См. также

gitremote-helpers[7]

remote-ext

© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-remote-ext

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API