web-dev-qa-db-ja.com

go.modのGoモジュールの依存関係をレポの最新のコミットにポイントする方法は?

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はコミットハッシュになりますか?そのような情報は手で見つけて入力するべきですか、それとももっと良い方法がありますか?

28
dimus

必要なコミットハッシュで「取得」するだけです。

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

44
Everton

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 順序に基づいて、すべてのバージョンにわたって単純な合計順序を提供するのに役立ちます)。

28
typical182