我是golang的新手。我瞭解到,go get
可用作包管理器,並通過各種版本控制系統與遠程回購聯繫。「go get」如何瞭解使用遠程回購的版本控制系統?
因此,給定包導入路徑,go get
如何決定使用哪個VCS?我總是看到下面的查詢字符串reqeust:
?go-get=1
因此,似乎在這裏的一些協議/公約?
我是golang的新手。我瞭解到,go get
可用作包管理器,並通過各種版本控制系統與遠程回購聯繫。「go get」如何瞭解使用遠程回購的版本控制系統?
因此,給定包導入路徑,go get
如何決定使用哪個VCS?我總是看到下面的查詢字符串reqeust:
?go-get=1
因此,似乎在這裏的一些協議/公約?
Go的好處之一就是一切都在,Go :-)包括幾乎所有的標準庫和工具。
在cmd/go/vcs.go
我們可以看到這是如何完成的,並且在cmd/go/alldocs.go
中有記錄。
詳細的,請看repoRootForImportPath
:
// repoRootForImportPath analyzes importPath to determine the
// version control system, and code repository to use.
func repoRootForImportPath(importPath string, security securityMode) (*repoRoot, error) {
這樣做是:
vcsPaths
舉辦的 「已知主機」 的靜態列表。對於一些(例如GitHub),這很容易,我們可以設置VCS。對於其他人(例如BitBucket),使用回調函數檢查URL以查看可以使用哪些回購。
如果失敗,它會嘗試查看路徑中的「VCS擴展名」,例如example.com/foo.git
或example.com/foo.git/dir
。
最後go get
將尋找一個go-import
meta標籤,它看起來像:
<meta name="go-import" content="example.com/path git https://github.com/Example/repo.git">
另見parseMetaGoImports()
。 Vanity Imports with Hugo是一個很好的介紹如何使用它。
沒有真正的「自動檢測」機制。所以如果你回購生活在那麼go get example.com/stuff
將不是工作。您需要需要的擴展或元標記。
添加了go-get=1
參數,以便網站製作者很容易看到這是來自go get
的請求,這在某些情況下可能會有用。
感謝您指出實施位置。作爲一個真實的例子,'https:// golang.org/x/net/html'中的HTML頁面包含'go-import'元標記。 – smwikipedia