亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

git repo 中的 Git repo,由 go get 創建 - 轉換為子模塊

git repo 中的 Git repo,由 go get 創建 - 轉換為子模塊

Go
青春有我 2022-01-04 10:09:42
我在 git 存儲庫中有一個 go/golang 項目的完整 src-tree。這樣我就可以輕松地將一個完整的項目及其依賴項克隆到另一臺計算機上。當使用 go get from eg, github.com 時,go 會在我的 src-tree 中克隆 github 項目。是否有一種簡單/標準的方法可以將這個內部 git repo 轉換為子模塊?類似的東西git submodule add <path>?還是我必須手動或自動找到內部存儲庫的 url 并使用 git submodule add <url> <path>不使用這種方法的任何論據?就我所見,優點是我可以完全控制源代碼的版本控制,輕松克隆包括依賴項在內的完整項目,使用 go get 更新我依賴/檢索的第三方代碼的簡便方法。結論 謝謝 Will C 和 VonC。我最終將供應商系統與工具 govendor 一起使用。我喜歡這個工具是因為它的透明性和簡單性——它從來都不是必需的工具。此外,Go vendoring 系統滿足了我的主要目標 - 輕松將我的完整項目及其依賴項克隆到不同的計算機。
查看完整描述

2 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

您描述的方法似乎在維護方面引起了更多的麻煩。想象一下,每當進行更改時,必須記住做一個git submodule update,然后遇到向后兼容性問題。

相反,我建議將Godep視為一種依賴工具。此外,在 Go 1.5+ 中,他們已經在試驗vendor用于管理依賴項的文件夾,您可以在此處找到更多信息。

從高層次來看,版本控制有一些細微差別,Godep但它允許您通過其 SHA 有效地檢查特定提交。SHA 由您在GOPATH. 這實際上還包括您提到的優勢,例如擁有一個包含依賴項及其依賴項的位于中心的目錄,并且能夠控制您想要使用的依賴項的版本。嘗試在git submodules 中管理它的麻煩要少得多。


查看完整回答
反對 回復 2022-01-04
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

我完全同意Will C回答,但以防萬一您仍想將您的 github 存儲庫作為子模塊(在供應商子文件夾中)引用,這里是我為快速執行此操作而制作的腳本:

它會:

  • go get內的 github 存儲庫vendor/src(通過將 GOPATH 臨時重置為供應商)

  • 找出所有采用進口的回購協議go get(這意味著你的GitHub庫它的依賴),使用go list -f

  • 在供應商子文件夾中將這些存儲庫添加為主存儲庫的子模塊

  • 清理(rm)vendor/src文件夾,該文件夾只是為了獲取存儲庫。

vendor.bat。

用法:

cd /path/to/your/repo

vendor github.com/jroimartin/gocui

這將創建:


 /path/to/your/repo/vendor/github.com/jroimartin/gocui

 /path/to/your/repo/vendor/github.com/<other/dependent/repos>


查看完整回答
反對 回復 2022-01-04
  • 2 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號