Git

名称

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

概述

git remote add <别名> "ext::<命令>[ <参数>…​]"

描述

该远程助手使用指定的 <命令> 连接远程 Git 服务器。

写入指定 <命令> 的标准输入流的数据被假定为发送到 git:// 服务器、git-upload-pack、git-receive-pack 或 git-upload-archive(视情况而定),而从 <命令> 的标准输出流读取的数据被假定为从同一服务接收。

命令和参数之间用空格隔开。

以下序列具有特殊含义:

'% '

命令或参数中的字面空格。

%%

字面百分号。

%s

替换为 Git 希望调用的服务名称(receive-pack、upload-pack 或 upload-archive)。

%S

替换为 Git 希望调用的服务的长名称(git-receive-pack、git-upload-pack 或 git-upload-archive)。

%G(必须是参数中的第一个字符)

这个参数不会传给 <命令>。相反,它会导致辅助程序向远端发送 git:// 服务请求,其中服务字段设置为合适的值,版本库字段则设置为参数的其余部分。默认情况下不发送此类请求。

如果远端是通过隧道访问的 git:// 服务器,这个功能就很有用。

%V (必须是参数中的第一个字符)

该参数不会传递给 <命令>。相反,它会在 git:// 服务请求中设置 vhost 字段(与参数的其余部分相同)。 默认情况是不在此类请求中发送 vhost(如果发送)。

环境变量

GIT_TRANSLOOP_DEBUG

如果设置,则打印各种读/写的调试信息。

传递给命令的环境变量

GIT_EXT_SERVICE

设置为辅助程序需要调用的服务的长名称(git-upload-pack 等…​…​)。

GIT_EXT_SERVICE_NOPREFIX

设置为辅助程序需要调用的服务的长名称(upload-pack 等…​…​)。

实例

当您使用 "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 作为密钥对,user 作为远程用户。这样就无需编辑 .ssh/config。

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

代表通过抽象命名空间地址 /git-server 的 git 协议访问的仓库,路径为 /somerepo。

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

代表使用辅助程序 "git-server-alias foo" 访问的仓库,路径为 /repo。 仓库路径和请求类型不在命令行中传递,而是作为协议流的一部分,与 git:// 协议一样。

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

代表使用辅助程序 "git-server-alias foo" 访问的仓库,路径为 /repo。 协议流中传递的远程服务器主机名将是 "foo"(这允许多个虚拟 Git 服务器共享一个链接级地址)。

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

代表使用辅助程序 "git-server-alias foo" 访问的仓库,路径为 "/repo with spaces"。 协议流中传递的远程服务器主机名将是 "foo"(这允许多个虚拟 Git 服务器共享一个链接级地址)。

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

代表使用辅助程序 "git-ssl foo.example /bar" 访问的仓库。 请求类型可由辅助程序使用环境变量确定(见上文)。

GIT

属于 git[1] 文档

scroll-to-top