状況
自作パッケージにAPI破壊を伴う変更を入れたので、v2.0.0としてリリース。タグも切ってGitHub上にPush。
その後、このパッケージに依存する別パッケージのimport文をgithub.com/yourorg/repo/sub/pkg
からgithub.com/yourorg/repo/v2/sub/pkg
に変更してgo mod tidy
したところ、以下のようなエラーメッセージが出た。
go mod tidy
go: finding module for package github.com/yourorg/repo/v2/sub/pkg
your/another/package imports
github.com/yourorg/repo/v2/sub/pkg: module github.com/yourorg/repo@latest found (v1.0.0), but does not contain package github.com/yourorg/repo/v2/sub/pkg
解決策
go.modをinitしなおす。( go mod init github.com/yourorg/repo/v2
)
やり方としては、以下のようなやり方がある様子。v1をメンテし続けるかどうかで判断すればいいのだろうか。
- v2ブランチを独立させる
- リポジトリ内にv2ディレクトリを作ってv2はそちらで作業する
- go.mod, go.sumを一度消してv2のgo.modを作り直す