php小編柚子將為大家分享如何將Golang模組的偽版本轉換為git提交的方法。在Golang的模組管理中,偽版本是為了在尚未發布的模組中維護依賴關係而使用的。然而,當你準備將模組發佈到git倉庫時,你需要將這些偽版本轉換為具體的git提交。本文將詳細介紹如何實現這個過程,幫助你更好地管理和維護Golang模組的依賴關係。
我有兩個包含 go 模組的 git 儲存庫,我們稱它們為 controller
和 api
。 controller
導入api
,因此controller
儲存庫中的go.mod
檔案依賴api
儲存庫中包含的模組。
我的問題是,為了運行controller
中的程式碼,我不僅需要api
中的go 程式碼,還需要儲存庫中包含的一些靜態檔案(從程式碼生成)。據我所知,沒有辦法將這些靜態檔案打包到go模組中,以便它們自動導入到我的vendor
資料夾中。
我目前的方法是嘗試將包含靜態檔案的資料夾新增為稀疏簽出的 git 子模組。但是,為了讓該子模組與從api
匯入的go 原始碼保持同步,我想要一個小的shell 腳本,自動檢查go.mod
檔案中api
模組的版本引用的提交。
雖然這可能適用於發布版本,但我也希望它適用於未發布版本,這些版本在go.mod
文件中具有<semantic version>-<commit 時間戳>-<commit 哈希前綴>
的偽版本。
有沒有辦法計算這個偽版本的完整提交哈希?我假設這在某種程度上是可能的,因為go modvendor
能夠簽出正確的版本,但我想到的唯一過程是搜尋在給定時間跨所有分支發生的提交,然後選擇其中的提交哈希前綴匹配...這聽起來在bash 中很難做到。
有什麼想法可以解決這個問題嗎?將我的靜態檔案從 api
導入 controller
的替代方法也值得讚賞,這種方式使它們與 api
模組的供應版本保持同步。
感謝 Volker 提供正確答案。使用 embed
套件實際上非常容易且運作良好。
此解決方案的一個缺點是只能嵌入 go 套件中的檔案。由於我生成的檔案位於不包含任何 go 程式碼的頂級資料夾中,因此我必須將它們包裝在虛擬包中才能嵌入它們。
以上是如何將 Golang 模組的偽版本轉換為 git 提交?的詳細內容。更多資訊請關注PHP中文網其他相關文章!