1. ホーム
  2. git

[解決済み] go.modのGoモジュールの依存関係をリポジトリの最新コミットに指し示すには?

2022-05-01 01:04:32

質問

v1.11から、Goはモジュールをサポートするようになりました。コマンド

go mod init <package name>
go build

を生成します。 go.modgo.sum ファイルには、パッケージの依存関係で見つかったすべてのバージョンが含まれています。

あるモジュールにリリースがない場合、そのモジュールの最新のコミットが使用されます。もし、あるモジュールがリリースを持っている場合、最新のものが依存関係として選ばれます。

しかし、時々、まだ公開されていないリリースではなく、そのリリースの後に作成されたコミットの機能が必要になることがあります。その場合、どのように go.mod は、モジュールのリリースではなく、モジュールのリポジトリ内の特定のコミットを指すようにするためですか?

でgo.modに手作業でできるようです。

module /my/module

require (
...
github.com/someone/some_module v0.0.0-20181121201909-af044c0995fe
...
)

ここで v0.0.0 は、最後に公開されたリリースタグに対応しません。 20181121201909 はコミットタイムスタンプになり af044c0995fe はコミットハッシュでしょうか?このような情報は手作業で探して入力すべきなのか、それとももっと良い方法があるのでしょうか?

どのように解決するのですか?

コミットハッシュを取得するだけです。

go get github.com/someone/some_module@af044c0995fe

'go get' は依存ファイル (go.mod, go.sum) を正しく更新します。

詳しくはこちら https://github.com/golang/go/wiki/Modules#how-to-upgrade-and-downgrade-dependencies