Wie konvertiere ich eine Pseudoversion eines Golang-Moduls in ein Git-Commit?

王林
Freigeben: 2024-02-08 23:00:22
nach vorne
1152 Leute haben es durchsucht

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

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.

Frageninhalt

Ich habe zwei Git-Repositorys, die Go-Module enthalten. Nennen wir sie controllerapicontroller 导入 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

Lösung

Vielen Dank an Volker für die richtige Antwort. Die Verwendung des Pakets 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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!