简体中文 ▾ 主题 ▾ 最新版本 ▾ git-remote-ext 最后更新于 2.43.0

名称

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

概要

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

描述

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

写入指定 <command> 的 stdin 的数据被假定为发送到 git:// 服务器、git-upload-pack、git-receive-pack 或 git-upload-archive(取决于情况),而从 <command> 的 stdout 读取的数据被假定为从同一服务接收。

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

以下序列具有特殊含义

'% '

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

%%

字面百分号。

%s

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

%S

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

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

此参数不会传递给 <command>。相反,它将导致辅助程序首先向远程端发送 git:// 服务请求,其中服务字段设置为适当的值,仓库字段设置为参数的其余部分。默认情况下不发送此类请求。

如果远程端是 Git 协议服务器,并且通过某些隧道访问,则此功能很有用。

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

此参数不会传递给 <command>。相反,它设置 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>" 等命令,且 <URL> 以 ext:: 开头时,Git 会透明地使用此远程辅助程序。 示例

"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 上可访问的路径为 /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] 套件的一部分