Русский ▾ Topics ▾ Latest version ▾ git-remote-ext last updated in 2.43.0

НАЗВАНИЕ

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

ОБЗОР

git remote add <псевдоним> "ext::<команда>[ <аргументы>…​]"

ОПИСАНИЕ

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

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

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

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

'% '

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

%%

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

%s

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

%S

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

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

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

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

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

Этот аргумент не будет передан <команде>. Вместо этого он устанавливает поле 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 <псевдоним> <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, доступный по протоколу 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". Тип запроса может быть определён помощником с использованием переменных среды (см. выше).

СМ. ТАКЖЕ

GIT

Является частью пакета git[1]