php小編子墨介紹:最近,Go語言中的模組管理工具又迎來了新的功能-多路徑模組。這項功能的引入,使得開發者在使用Go模組時可以更靈活地指定模組的路徑。以往,開發者只能將模組安裝在固定的路徑下,導致模組的依賴關係較為複雜。而現在,多路徑模組的出現,為開發者提供了更多的選擇,使得模組的管理更方便、更靈活。開發者可以根據專案的需要,將模組安裝在不同的路徑下,從而實現更好的模組管理與版本控制。這項新功能的引進,將進一步提升Go語言的開發效率與便利性。
我有一個鏡像到多個位置的 go 模組。一個在 gitlab 中,另一個在 bitbucket 中。當嘗試將其基於新的 gitlab 位置時,我得到:
go: gitlab.com/company/[email protected]: parsing go.mod: module declares its path as: bitbucket.org/company/core but was required as: gitlab.com/company/core
我知道為什麼會發生這種情況,但是我如何將我的 go.mod 定義為「或」?
簡短回答:你不能。
但一切或許都不會失去...
如果您在模組路徑引用的位置和由於某種原因您更喜歡從中下載的其他位置都有程式碼,則可以配置git alias
將引用從指定的模組路徑重定向到所需的下載來源:
git config --global --add url."https://<download path>".insteadof "https://<module path>"
別名不必完全替換。您可以使用別名來替換任何模組路徑上的前綴。因此,如果您在伺服器x 上託管了許多已在伺服器y 上識別(在其模組路徑中)的模組,則只需為該伺服器新增別名即可主機前綴和路徑覆蓋所有這些模組(只要儲存庫名稱相同)。
例如,我們使用它為本地 azuredevops server git 儲存庫中託管的模組建立「友善」模組路徑,例如:
git config --global --add url."https://tfs.myorg.com/myorgcollection/_git".insteadof "https://tfs.myorg.com"
然後,我們的模組就能夠將自己標識為tfs.myorg.com/somemodule.git
,但是當go get
嘗試獲取此git 時,它將在 https://tfs.myorg.com/myorgcollection/_git/somemodule 中尋找它.git
(.git
後綴是必要的 azure devops 特性)
說實話,我還沒有在完全不同的伺服器上嘗試過這個,只是為了在同一伺服器上「重寫」路徑,但原則上它應該可以工作。所以在你的情況下:
git config --global --add url."https://gitlab.com/company/".insteadof "https://bitbucket.org/company/"
因為這適用於git
層級的事物,就go
而言,它仍然從bitbucket.org
取得,即使git
將在背景造訪gitlab.com
。
即當您 go get
時,您需要引用宣告的模組路徑:
go get bitbucket.org/company/core
這樣做的唯一缺點是,您需要在任何/所有工作站(和建立機器)上配置別名,這些工作站需要從模組路徑中聲明的位置以外的任何位置 go get
。
以上是具有多個路徑的 Go 模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!