概要
go get で go-swagger をアップデートしたときに最新版をうまくマージできない現象が発生しました
対象方法を紹介します
環境
- Ubuntu 16.04
- golang 1.8.1
- go-swagger 0.8.0 -> 0.10.0
エラー詳細
アップデート時に使用したコマンドは以下の通り
- go get -u github.com/go-swagger/go-swagger/cmd/swagger
そして以下のエラーが発生
go get -u github.com/go-swagger/go-swagger/cmd/swagger
# cd /root/go/src/github.com/go-swagger/go-swagger; git pull --ff-only
error: Your local changes to the following files would be overwritten by merge:
generator/bindata.go
generator/client.go
generator/shared.go
scan/path.go
scan/responses.go
Please, commit your changes or stash them before you can merge.
Aborting
Updating 00f4a1f..e62bb82
package github.com/go-swagger/go-swagger/cmd/swagger: exit status 1
単純にマージできないだけだったので、対象のディレクトリをごそっと削除して再度インストールしてあげます
その前に clean で swagger コマンド自体を削除します
- go clean -i github.com/go-swagger/go-swagger/cmd/swagger
- cd /root/go/src/github.com/go-swagger/go-swagger
- cd ../ && rm -rf go-swagger
- go get -u github.com/go-swagger/go-swagger/cmd/swagger
でエラーなく最新版をインストールすることができました
コードも実は修正する必要あり
go-swagger が生成してくれる main 的なソース「restapi/configure_your_project_name.go」ですがこいつも修正しないと最新版ではエラーが発生すると思います
configureServer の引数が 1 つ増えているので以下のように最後に一つ引数を追加してあげましょう
func configureServer(s *graceful.Server, scheme, addr string) {
...
}
最後に
go-swagger をバージョンアップした際に対応したことを紹介しました
オープンソースだしまだメジャーバージョンアップでもないので何とも言えませんが、後方互換性がないアップデートだとちょっと焦ります
0 件のコメント:
コメントを投稿