ホームページ  >  記事  >  バックエンド開発  >  Golang モジュールの擬似バージョンを git コミットに変換するにはどうすればよいですか?

Golang モジュールの擬似バージョンを git コミットに変換するにはどうすればよいですか?

王林
王林転載
2024-02-08 23:00:221126ブラウズ

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

php エディターの Youzi が、Golang モジュールの擬似バージョンを git 送信メソッドに変換する方法を共有します。 Golang のモジュール管理では、まだリリースされていないモジュールの依存関係を維持するために疑似バージョンが使用されます。ただし、モジュールを git リポジトリに公開する準備ができたら、これらの疑似バージョンを具体的な git コミットに変換する必要があります。この記事では、このプロセスを実装する方法を詳しく紹介し、Golang モジュールの依存関係をより適切に管理および維持するのに役立ちます。

質問内容

go モジュールを含む 2 つの git リポジトリがあります。それらを controllerapi と呼びます。 controllerapi をインポートするため、controller リポジトリ内の go.mod ファイルは、含まれる api リポジトリに依存します。モジュール。

私の問題は、controller でコードを実行するには、api の go コードだけでなく、リポジトリに含まれるいくつかの静的ファイル (コードから生成される) も必要であることです。 )。私の知る限り、これらの静的ファイルを go モジュールにパッケージ化して、vendor フォルダーに自動的にインポートされるようにする方法はありません。

私の現在のアプローチは、静的ファイルを含むフォルダーを、まばらにチェックアウトされた git サブモジュールとして追加してみることです。ただし、このサブモジュールと api からインポートされた go ソース コードとの同期を保つために、go.mod ファイルに が含まれているかどうかを自動的にチェックする小さなシェル スクリプトが必要です。 api モジュールのバージョンによって参照されるコミット。

これはリリースされたビルドでは機能するかもしれませんが、<セマンティック バージョン>-<go.mod ファイル Poke&gt のコミット時間を持つ未リリースのバージョンでも機能することを望みます。 ; - <コミットハッシュプレフィックス>の疑似バージョン。

この偽バージョンの 完全な コミット ハッシュを計算する方法はありますか? go modvendor は正しいバージョンをチェックアウトできるので、これはある程度可能だと思いますが、私が考えることができる唯一のプロセスは、特定の時点ですべてのブランチにわたって発生したコミットを検索することです。次に、それらのコミットハッシュプレフィックスマッチングを選択します...これをbashで行うのは難しいように思えます。

この問題を解決する方法はありますか?静的ファイルを api から controller にインポートする代替案も高く評価されます。この方法により、提供されたバージョンの api モジュールとの同期が維持されます。

解決策

正しい答えを提供してくれたVolkerに感謝します。 embed パッケージの使用は実際には非常に簡単で、うまく機能します。

このソリューションの欠点の 1 つは、ファイルを go パッケージにのみ埋め込めることです。生成したファイルは go コードが含まれていない最上位フォルダーにあるため、それらを埋め込むには仮想パッケージでラップする必要があります。

以上がGolang モジュールの擬似バージョンを git コミットに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。