V1.11 Goから、モジュールのサポートが追加されました。コマンド
go mod init <package name>
go build
パッケージの依存関係で見つかったすべてのバージョンを含むgo.mod
およびgo.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
go get github.com/someone/some_module@af044c0995fe
を使用して特定のコミットを取得するエバートンの answer に加えて、次のようなブランチ名も使用できます。
go get github.com/someone/some_module@master
go get github.com/someone/some_module@dev_branch
これらの例は、対応するブランチで最新のコミットを取得します。
go.mod
などのv0.0.0-20171006230638-a6e239ea1c69
ファイルに pseudo-version として記録されます。 (これは、標準の semver 順序に基づいて、すべてのバージョンにわたって単純な合計順序を提供するのに役立ちます)。