Skip to content

git-remote-ext

将智能传输桥接到外部命令。

概要

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

描述

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

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

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

以下序列具有特殊含义:

  • % :命令或参数中的字面空格。
  • %%:字面百分号。
  • %s:替换为 Git 要调用的服务名称(receive-pack、upload-pack 或 upload-archive)。
  • %S:替换为 Git 要调用的服务长名称(git-receive-pack、git-upload-pack 或 git-upload-archive)。
  • %G(必须是参数中的第一个字符):此参数不会传递给 <command>。相反,它将导致助手首先向远程端发送 git:// 服务请求。
  • %V(必须是参数中的第一个字符):此参数不会传递给 <command>。相反,它设置 git:// 服务请求中的 vhost 字段。

环境变量

  • GIT_TRANSLOOP_DEBUG:如果设置,则打印有关各种读写的调试信息。

传递给命令的环境变量

  • GIT_EXT_SERVICE:设置为助手需要调用的服务长名称。
  • 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 作为密钥对,使用 user 作为远程端的用户。
  • 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 的仓库。

另请参阅

gitremote-helpers(7)

Git

git 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布