Go でのサブモジュールのバージョンの管理
ルート go.mod ファイルとサブフォルダー内の go.mod ファイルの両方を使用して Go リポジトリを管理する場合、サブモジュールのバージョンがどのように処理されるかを理解することが重要になります。
サブモジュールのバージョニング
単一の go.mod ファイルのモノリシックな性質とは異なり、サブモジュールでは内部で独立したバージョニングが可能です。リポジトリ。各サブモジュールのバージョンは、独自の go.mod ファイルによって制御されます。つまり、メイン モジュールとは別に更新およびリリースできます。
例: Vault 統合
Vault を使用した例の場合、サブモジュール github.com/bashicorp/vault/api には独自の go.mod ファイルとバージョン管理があり、そのスーパーモジュールはルートの go.mod ファイルを継承します。これは、API サブモジュールを v1.3.3 に更新しようとしたときにエラーが表示された場合、それはメイン モジュールのバージョンと不一致を試みているためであることを意味します。
問題の解決
この競合を解決するには、Go にバージョン検出を処理させることが重要です。インポート中に go.mod ファイルでバージョンを指定する代わりに、「go get」を使用するだけで、各サブモジュールの最新バージョンを自動的に取得できます。
階層型 Git タグについて
サブモジュールのバージョン管理の場合、Go は階層型 Git タグを利用して特定のバージョンをマークします。 Vault の場合、メイン バージョンは 1.3.3 ですが、API サブモジュールには v1.0.4 というタグが付けられた最新バージョンがあります。サブモジュールに go get を使用する場合、互換性のある最新のバージョンを取得するために Git タグが使用されます。
結論
Go でサブモジュールのバージョンを効果的に管理するには、サブモジュールのバージョンが動作することを覚えておいてください。独自の go.mod ファイルとバージョンを使用して独立して実行できます。サブモジュールに go get を使用することで、Go の依存関係管理が互換性のある最新バージョンを判断できるようにします。階層型 Git タグは、サブモジュールのバージョン管理とバージョンの不一致防止のサポートを提供します。
以上がGo プロジェクトではサブモジュールのバージョンはどのように管理されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。