背景
OpenAPIを使ったプロジェクトでopenapi-generatorコマンドでコードを自動生成したところ、僕が変更を加えた量より遥かに多い変更がされてしまった。
.openapi-generator/VERSION
は4.0.2
になっている。
一方手元で
$ openapi-generator version
と打つと
4.1.1
が返ってくる。
要するにマスタとローカルでopenapi-generatorのバージョンが違うのが原因らしいので、openapi4.0.2をインストールしようということになった。
確認
openapi-generatorはHomebrewでbrew install openapi-generator
と打って取得したもの。
Homebrewに他のバージョンがあるか確認するにはbrew info openapi-generator
と打つ。
ここで例えば以下のように目標のバージョンがあった場合、
/usr/local/Cellar/openapi-generator/4.0.2 (4 files, 18.5MB)
Built from source on 2019-08-31 at 15:50:00
/usr/local/Cellar/openapi-generator/4.1.1 (4 files, 18.8MB) *
Built from source on 2019-08-31 at 15:35:33
brew switch openapi-generator 4.0.2
などと打てばバージョンをスイッチできる。
取得
たぶん上の方法で無いことの方が多いと思うので、そのときはFormulaのバージョンを遡ってインストールする。
Formulaのディレクトリに移動
$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
ログを確認
$ git log openapi-generator.rb
ログはj/kで上下移動、qで終了など。
これで目標のcommitを探すのだけど、最近のcommitしか残ってない場合がある。そのときは
$ git fetch --depth 10000
みたいにdepthを指定してfetchすると昔のcommitが見れる。
するとこんな感じで目標のバージョンのcommit番号が分かるはず。
commit 3f66aa275955a9e3c042c48af2462f74cd051f5b
Author: William Cheng <wing328hk@gmail.com>
Date: Thu Jun 20 14:30:01 2019 +0800
openapi-generator 4.0.2 (#41145)
分かったら以下の感じで良い感じにする。
$ git checkout 3f66aa275955a9e3c042c48af2462f74cd051f5b openapi-generator.rb
$ brew unlink openapi-generator #一旦今のリンクを外す
$ HOMEBREW_NO_AUTO_UPDATE=1 brew install openapi-generator #自動更新無しにしてインストール
openapi-generator version
で欲しいバージョンになっていることを確認したら、git reset --hard
で元に戻しておく。
以降は上のbrew switch
を使ってバージョン行き来もできる。
参考リンク
Homebrewで旧バージョンのパッケージをインストールしたい
homebrew の git logを確認して Python 3.6.5のインストールしてみる。