1
0

More than 3 years have passed since last update.

go modules での メジャーバージョンのあげ方

Posted at

v2以上にアップデートするにはコツがいる

golang でライブラリを作ったとき、破壊的変更をしてメジャーバージョンをアップデートするには少しコツが必要です。
サンプルの構成は以下の通りです。

/hello
├── go.mod
└── hello.go
go.mod
module github.com/example/hello

go 1.14
hello.go
package hello

func Hello() string {
    return "hello"
}

vX.0.0 を作る

機能に破壊的変更を加え、コミット、プッシュします。
このコミットに対して vX.0.0 タグ(X には任意のバージョンが入る) をつけてください。
この時点では他リポジトリから利用できません

hello.go
package hello

func HelloV2() string {
    return "hello v2"
}

vX.0.1 を作る

go.mod のモジュール名を修正します。

go.mod
module github.com/example/hello/vX

go 1.14

go get github.com/example/hello/vX で利用可能になります。

まとめ

  • メジャーバージョンを上げるときは一旦vX.0.0 というバージョンを作ってから モジュール名を変更する必要があります。
    • vX.0.0 でいきなりモジュール名も変更してしまうと go get できません。
    • vX.0.1 を作った後も vX.0.0 は利用不可能なバージョンとして残ります。
  • ちょっと変な感じ。。。
  • もっといい方法があれば教えてほしいです。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0