やろうとしたこと
LaravelでAPIを作っていて、そのAPI仕様をLaravel API Spec Generator(kotamat/laravel-apispec-generator)でいい感じに残したかった。 このライブラリはPHPUnitを動かしたときにいい感じにRFC 7230ベースでの記述でAPI Specを記録してくれる。
詳しくはこちら。 SwaggerでAPI仕様書に消耗しているなら.restを使うといい。特にLaravelなら
例えば
http://localhost/api/test
というエンドポイントのテストを動かすと、
laravel/storage/app/http/localhost/api/test/GET.http
というファイル名でAPI仕様を吐き出してくれる。
インストールOK!テストもOK!あとはAPI Specをコミットしておけばいいよね!
(作者様の意図だとgit汚染しないためにデフォルトでgit管理対象外のstorage/app/
配下に出力するようにしてたらしいけど、フロントエンドが別担当だったので敢えてgit管理することにした。)
しかしgitにしばし悩まされることに…。
事象
- 既に管理対象外だったのでホワイトリスト形式の.gitignoreに追加した。
- しかしgit管理上では管理対象外のままで、追加できない。
git rm --cached .
も効果がない。(めちゃくちゃ差分出てきて一瞬びっくりするだけだった)
laravel/storage/app/.gitignore
* !http/ !http/*
解決策
1つだけの.gitignoreで済まそうとしたのが悪かったのかもしれないと思い、git管理対象外のディレクトリ内にも.gitignoreを配置した。
laravel/storage/app/http/.gitignore
!*
一度上位の.gitignoreで管理対象に含め、下位の.gitignoreを新規に作成してすべてを管理対象にすればOKってことなんですね…。