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". Тип запроса может определяться помощником с помощью переменных окружения (см. выше).
См. также
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