git remote-ext

优质
小牛编辑
128浏览
2023-12-01

名称

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]