git-remote-ext - 将智能传输桥接到外部命令。

## 概要

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

## 描述

此远程助手使用指定`<command>`的连接到远程Git服务器。

写入指定stdin的数据`<command>`被假定为发送到git://server，git-upload-pack，git-receive-pack或git-upload-archive（取决于具体情况），以及从stdout <命令>被认为是从同一个服务接收的。

命令和参数由未转义的空格分隔。

以下序列具有特殊含义：

'% '

命令或论点中的文字空间。

%%

文字百分号。

%s

替换为Git希望调用的服务的名称（接收包，上传包或上传存档）。

%S

替换为Git想要调用的服务的长名称（git-receive-pack，git-upload-pack或git-upload-archive）。

％G（必须是参数中的第一个字符）

这个参数不会传递给`<command>`。相反，它会使助手开始发送git://服务请求到远程端，并将服务字段设置为适当的值，并将信息库字段设置为参数的其余部分。默认不发送这样的请求。

如果远程端是通过某个隧道访问的git://服务器，这很有用。

％V（必须是参数中的第一个字符）

这个参数不会传递给`<command>`。相反，它将ghost://服务请求中的虚拟主机字段（设置为参数的其余部分）。默认不发送虚拟主机在这样的请求（如果发送）。

## 环境变量：

GIT_TRANSLOOP_DEBUG

如果设置，则打印关于各种读取/写入的调试信息。

## 传递给命令的环境变量：

GIT_EXT_SERVICE

设置为服务助手需要调用的长名称（git-upload-pack等）。

GIT_EXT_SERVICE_NOPREFIX

设置为服务助手需要调用的长名称（上传包等）。

## 示例：

当您使用诸如“git fetch <URL>”，“git clone <URL>”，“git push <URL>”或“git remote add <nick> <URL>”之类的命令时，Git透明地使用此远程助手。 ，其中<URL>开头`ext::`。例子：

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

像host.example：foo/repo，但使用/home/foo/.ssh/somekey作为密钥对，用户使用远程端的用户。这避免了需要编辑.ssh/config。

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

使用git协议在抽象名称空间地址/git-server上代表具有path/somerepo的存储库。

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

表示使用助手程序“git-server-alias foo”访问path/repo的存储库。存储库的路径和请求的类型不像命令行那样传递，而是作为协议流的一部分，像通常一样使用git://协议。

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

表示使用助手程序“git-server-alias foo”访问path/repo的存储库。在协议流中传递的远程服务器的主机名将是“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[1]