Editor PHP Youzi akan berkongsi dengan anda cara menukar versi pseudo modul Golang kepada penyerahan git. Dalam pengurusan modul Golang, versi pseudo digunakan untuk mengekalkan kebergantungan dalam modul yang belum dikeluarkan. Walau bagaimanapun, apabila anda bersedia untuk menerbitkan modul ke repositori git, anda perlu menukar versi pseudo ini kepada git commit konkrit. Artikel ini akan memperkenalkan secara terperinci cara melaksanakan proses ini dan membantu anda mengurus dan mengekalkan kebergantungan modul Golang dengan lebih baik.
Saya mempunyai dua repositori git yang mengandungi modul go, mari kita panggil mereka controller
和 api
。 controller
导入 api
,因此 controller
存储库中的 go.mod
文件依赖于 api
modul yang terkandung dalam repositori.
Masalah saya ialah, untuk menjalankan folder controller
中的代码,我不仅需要 api
中的 go 代码,还需要存储库中包含的一些静态文件(从代码生成)。据我所知,没有办法将这些静态文件打包到go模块中,以便它们自动导入到我的vendor
.
Pendekatan semasa saya adalah untuk mencuba dan menambah folder yang mengandungi fail statik sebagai submodul git yang jarang diperiksa. Walau bagaimanapun, untuk menjadikan submodul itu berfungsi dengan komit yang dirujuk daripada versi modul api
导入的 go 源代码保持同步,我想要一个小的 shell 脚本,自动检查 go.mod
文件中 api
.
Walaupun ini mungkin berfungsi untuk binaan yang dikeluarkan, saya juga mahu ia berfungsi untuk binaan yang belum dikeluarkan, yang merupakan versi pseudo go.mod
文件中具有 <semantic version>-<commit 时间戳 >-<commit 哈希前缀 >
.
Adakah terdapat cara untuk mengira lengkap serahkan cincang versi pseudo ini? Saya mengandaikan ini sedikit sebanyak mungkin, kerana go modvendor
dapat menyemak versi yang betul, tetapi satu-satunya proses yang boleh saya fikirkan ialah mencari komit yang berlaku merentas semua cawangan pada masa tertentu, dan kemudian pilih komit antara yang mana awalan cincang sepadan ..Ini kedengaran sukar untuk dilakukan dalam bash.
Ada idea bagaimana untuk menyelesaikan masalah ini? Alternatif untuk mengimport fail statik saya daripada api
ke dalam controller
juga dihargai, dengan cara ini memastikan fail tersebut disegerakkan dengan versi modul api
yang dibekalkan. . api
导入 controller
的替代方法也值得赞赏,这种方式使它们与 api
模块的供应版本保持同步。
感谢 Volker 提供正确答案。使用 embed
embed
sebenarnya sangat mudah dan berfungsi dengan baik. 🎜
🎜Satu kelemahan penyelesaian ini ialah hanya fail dalam pakej go boleh dibenamkan. Memandangkan fail yang saya hasilkan berada dalam folder peringkat atas yang tidak mengandungi sebarang kod go, saya perlu membungkusnya dalam pakej maya untuk membenamkannya. 🎜Atas ialah kandungan terperinci Bagaimana untuk menukar versi pseudo modul Golang menjadi komit git?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!