首頁 > 後端開發 > Golang > 主體

如何將 Golang 模組的偽版本轉換為 git 提交?

王林
發布: 2024-02-08 23:00:22
轉載
1152 人瀏覽過

如何将 Golang 模块的伪版本转换为 git 提交?

php小編柚子將為大家分享如何將Golang模組的偽版本轉換為git提交的方法。在Golang的模組管理中,偽版本是為了在尚未發布的模組中維護依賴關係而使用的。然而,當你準備將模組發佈到git倉庫時,你需要將這些偽版本轉換為具體的git提交。本文將詳細介紹如何實現這個過程,幫助你更好地管理和維護Golang模組的依賴關係。

問題內容

我有兩個包含 go 模組的 git 儲存庫,我們稱它們為 controllerapicontroller 導入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中文網其他相關文章!

相關標籤:
來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!