1 回答

TA貢獻1784條經驗 獲得超8個贊
簡短的回答是肯定的。
由 顯示go help importpath
或在此處可用的文本描述了如何設置導入路徑以暗示特定的版本控制系統。一些網站是預先知道的:
一些常見的代碼托管網站有特殊的語法:
[列表被截斷,但 GitHub 暗示使用 Git 協議,Launchpad 暗示 Bazaar,等等]對于托管在其他服務器上的代碼,導入路徑可以使用版本控制類型進行限定,或者 go 工具可以通過 https/http 動態獲取導入路徑,并從 HTML 中的 <meta> 標記中發現代碼所在的位置。
因此,如果您無權訪問或控制此類<meta>
標簽,則應使用明確指定的 VCS 導入:
...表單的導入路徑
repository.vcs/path使用命名的版本控制系統指定給定的存儲庫,帶或不帶 .vcs 后綴,然后是該存儲庫內的路徑。
也就是說,要告訴go get
它必須使用 Mercurial 協議來托管example.com
您可能使用的主機:
import "example.com/me.hg/repo"
或者:
import "example.com/me/repo.hg"
這.hg
意味著使用 Mercurial。
一旦你選擇了一個特定的 VCS,事情就會變得有點棘手:
當一個版本控制系統支持多種協議時,下載時會依次嘗試。例如,Git 下載嘗試 https://,然后嘗試 git+ssh://。
Go VCS 導入器的源代碼有詳細信息。Mercurial 存儲庫導入https
首先嘗試,然后ssh
.
如果你可以使用<meta>
標簽,那可以提供更多的細節,這樣你就可以避免.hg
在導入路徑中相對笨拙:
如果導入路徑不是已知的代碼托管站點并且也缺少版本控制限定符,則 go 工具會嘗試通過 https/http 獲取導入并在文檔的 HTML <head> 中查找 <meta> 標記。
如果您正在實現對<meta>
請求頁面的響應,請閱讀所有其余部分,因為這繼續說:
使用模塊時,go-import 元標記的附加變體被識別,并且優于那些列出版本控制系統的變體。該變體使用“mod”作為內容值中的 vcs,如下所示:
<meta name="go-import" content="example.org mod https://code.org/moduleproxy">此標記意味著從 URL https://code.org/moduleproxy上可用的模塊代理獲取路徑以 example.org 開頭的模塊。有關代理協議的詳細信息,請參閱“go help goproxy”。
- 1 回答
- 0 關注
- 119 瀏覽
添加回答
舉報