簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-remote-ext 最後更新於 2.43.0

名稱

git-remote-ext - 將智慧傳輸橋接到外部命令。

概要

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:// 服務請求,其中服務欄位設定為適當的值,倉庫欄位設定為引數的其餘部分。預設是不傳送此類請求。

如果遠端端是透過某個隧道訪問的 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] 套件的一部分

scroll-to-top