Heim > Artikel > Backend-Entwicklung > Wie konvertiere ich eine Pseudoversion eines Golang-Moduls in ein Git-Commit?
Der PHP-Editor Youzi zeigt Ihnen, wie Sie die Pseudoversion des Golang-Moduls in eine Git-Übermittlungsmethode umwandeln. In der Modulverwaltung von Golang werden Pseudoversionen verwendet, um Abhängigkeiten in Modulen aufrechtzuerhalten, die noch nicht veröffentlicht wurden. Wenn Sie jedoch bereit sind, das Modul in einem Git-Repository zu veröffentlichen, müssen Sie diese Pseudoversionen in konkrete Git-Commits konvertieren. In diesem Artikel wird detailliert beschrieben, wie Sie diesen Prozess implementieren und Ihnen dabei helfen, die Abhängigkeiten von Golang-Modulen besser zu verwalten und zu verwalten.
Ich habe zwei Git-Repositorys, die Go-Module enthalten. Nennen wir sie controller
和 api
。 controller
导入 api
,因此 controller
存储库中的 go.mod
文件依赖于 api
Module, die in den Repositorys enthalten sind.
Mein Problem ist, den Ordner controller
中的代码,我不仅需要 api
中的 go 代码,还需要存储库中包含的一些静态文件(从代码生成)。据我所知,没有办法将这些静态文件打包到go模块中,以便它们自动导入到我的vendor
auszuführen.
Mein aktueller Ansatz besteht darin, den Ordner mit den statischen Dateien als spärlich ausgechecktes Git-Submodul hinzuzufügen. Damit dieses Submodul jedoch mit Commits funktioniert, auf die in der Version des api
导入的 go 源代码保持同步,我想要一个小的 shell 脚本,自动检查 go.mod
文件中 api
-Moduls verwiesen wird.
Während dies möglicherweise für veröffentlichte Builds funktioniert, möchte ich, dass es auch für unveröffentlichte Builds funktioniert, bei denen es sich um Pseudoversionen von go.mod
文件中具有 <semantic version>-<commit 时间戳 >-<commit 哈希前缀 >
handelt.
Gibt es eine Möglichkeit, den vollständigen Submit-Hash dieser Pseudoversion zu berechnen? Ich gehe davon aus, dass dies bis zu einem gewissen Grad möglich ist, da go modvendor
die richtige Version auschecken kann, aber der einzige Prozess, der mir einfällt, besteht darin, nach Commits zu suchen, die zu einem bestimmten Zeitpunkt in allen Zweigen aufgetreten sind, und dann die Commits auszuwählen was das Hash-Präfix übereinstimmt. Das klingt in Bash schwierig.
Irgendwelche Ideen, wie man dieses Problem lösen kann? Die Alternative, meine statischen Dateien von api
in controller
zu importieren, wird ebenfalls geschätzt, um sie auf diese Weise mit der bereitgestellten Version des api
-Moduls synchron zu halten . api
导入 controller
的替代方法也值得赞赏,这种方式使它们与 api
模块的供应版本保持同步。
感谢 Volker 提供正确答案。使用 embed
embed
ist eigentlich sehr einfach und funktioniert gut. 🎜
🎜Ein Nachteil dieser Lösung besteht darin, dass nur Dateien innerhalb des go-Pakets eingebettet werden können. Da sich die von mir generierten Dateien in einem Ordner der obersten Ebene befinden, der keinen Go-Code enthält, muss ich sie in ein virtuelles Paket einbinden, um sie einzubetten. 🎜Das obige ist der detaillierte Inhalt vonWie konvertiere ich eine Pseudoversion eines Golang-Moduls in ein Git-Commit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!