2 回答

TA貢獻(xiàn)1804條經(jīng)驗 獲得超8個贊
我想給出一些支持提交vendor
、go.mod
和的論據(jù)go.sum
。
我同意已接受答案的論點,即它在技術(shù)上是不必要的并且會使回購協(xié)議膨脹。
但這里有一個相反的論點列表:
構(gòu)建項目并不依賴于 Github/Gitlab/... 或 Go 代理服務(wù)器上可用的某些代碼。開源項目可能會因為審查、作者激勵、許可變更或其他一些我目前無法想到的原因而消失,這種情況確實發(fā)生在 JavaScript 包管理器 npm 上,并破壞了許多項目。不在您的存儲庫中,不在您的代碼中。
我們可能使用了內(nèi)部或第 3 方 Go 模塊(私有),這些模塊也可能會消失或變得無法訪問,但如果它們在供應(yīng)商中提交,那么它們就是我們項目的一部分。沒有任何事情會意外發(fā)生。
私有 Go 模塊可能不遵循語義版本控制,這意味著 Go 工具在動態(tài)獲取它們時將依賴最新的提交哈希?;刭彋v史記錄可能會被重寫(例如變基),并且您、同事或您的 CI 工作可能最終會為他們使用的依賴項得到不同的代碼。
承諾供應(yīng)商可以改進(jìn)您的代碼審查流程。通常,我們總是在單獨的提交中提交依賴項更改,因此如果您好奇的話可以輕松查看它們。
這是一個與存儲庫膨脹相關(guān)的有趣觀察。如果我進(jìn)行代碼審查,并且團(tuán)隊成員包含了一個包含 300 個文件的新依賴項(或更新了一個包含 300 個文件更改的依賴項),我會非常好奇地深入研究該依賴項并開始討論代碼質(zhì)量以及此更改的必要性或替代的 Go 模塊。這實際上可能會減少二進(jìn)制文件的大小和整體復(fù)雜性。
如果我只在新的合并請求中看到一個新行go.mod
,我很可能不會考慮它。
執(zhí)行編譯和構(gòu)建步驟的 CI/CD 作業(yè)不需要在每次執(zhí)行 CI 作業(yè)時浪費時間和網(wǎng)絡(luò)來下載依賴項。所有需要的依賴項都是本地的并且存在 (?
go build -mod vendor
)
這些都是我的想法,如果我還記得什么,我會在這里補(bǔ)充。

TA貢獻(xiàn)1817條經(jīng)驗 獲得超14個贊
除非您需要修改供應(yīng)的軟件包,否則您不應(yīng)該這樣做。Go 模塊已經(jīng)為您提供了可重復(fù)的構(gòu)建,因為go.mod
文件記錄了依賴項的確切版本和提交哈希值,該go
工具將尊重并遵循這些哈希值。
可以通過運行該命令vendor
來重新創(chuàng)建該目錄go mod vendor
,并且默認(rèn)情況下它甚至?xí)缓雎裕?code>go build除非您要求它與標(biāo)志一起使用-mod=vendor
。
- 2 回答
- 0 關(guān)注
- 130 瀏覽
添加回答
舉報