git-secrets Argument list too long コミット できない
新しいアプリを立ち上げようとrails newした。そして作ったアプリのレポジトリをGit hubにあげようとしたらエラーが出た。
どうもAWSのパスワードとかが流出しないよう監視してくれるgit-secretsが悪さしている気がする。
Argument list too long について調べてみると、mvで一度に大量のファイルの移動をしたり、Git rmなどで大量のファイルを削除しようとするときに、引数が大きすぎるから拒否されるためにでるらしい。そういう時は処理を分割してやってくれるコマンドがあるという。
<参考>
https://qiita.com/SShayashi/items/1fef1bb11439891a5e2c
https://utano.jp/entry/2018/08/solution-for-mv-error-argument-list-too-long/
しかし今回はそうじゃない。First commitの時に引数が大きすぎて拒否されている。
どうやらGemをbundle installしたためファイルがたくさんあって、それが原因になっている。そんなの当たり前じゃないか。いままでそんなこと起きたことないぞ?
<試したこと>
●git-secretsの記述を削除してからコミット
私は以前AWSにデプロイしたりしていて、そのときに新たに作るアプリケーションには自動でgit-secretsがinstallされるように設定していた。↓↓
$ git secrets --install ~/.git-templates/git-secrets
$ git config --global init.templatedir '~/.git-templates/git-secrets'
このために新しいアプリがgit-secretsの影響を受けた。とりあえず、この新しいやつからgit-secretsをアンインストールしてみっかと git secrets --uninstall と打ってみたが、そんなコマンドは存在しないと言われた。え、導入はさせるが排出させる気はないのか…
HomebrewからPCに入ってるgit-secretsをRemoveすることはできるみたいだが、とりあえず今回はこの新規アプリからだけ機能を削除してみた。
https://piruty2.hatenablog.jp/entry/%3Fp%3D521
git-secretsの削除を調べていて出てきたこの記事を参考にすると、各アプリのディレクトリに隠しフォルダとして.git/hooksがあり、その中にgit-secretsを実行させるファイルがあるようだ。
このhooksの中身を削除しました。
$ rm pre-commit
$ rm prepare-commit-msg
これでとりあえずこのアプリをgitにあげる時にgit-secretsは作動しなくなる。
この状態でコミットを実行したら何なくできました。やはりgit-secretsがひっかかってた。なんだろう、引数が多すぎると監視しきれなくなっちゃうのかな?
最初のコミットはできたので、あらためてアプリのディレクトリでgit-secret installし直しておきました。とりあえずこれで初回だけgit-secretsをスルーすることができました
●毎回この手順踏むのはよくないと思う
この手順はどう考えてもイレギュラーだろう。他にスマートな方法はないのか。
調べました。
ありました。
https://qiita.com/jqtype/items/9196e047eddb53d07a91
このオプションをつければhooksに入っているファイルの作業を飛ばしてコミットができる。
これやると、vimでコミット名を打ち込めと出るので、i でインサート開いて、コミットタイトルをいれてescキーからの:wqで、コミットが始まる。
コミットが完了したら、
でプッシュして完了。できた。
前までこんな手続き踏まずにFirst commitできていたのに、なんかできなくなってやな感じ。git-secretsの入れ直ししてみようかしら。そしたらこの記事更新しよう。
はぁ備忘備忘。