Githubのorganization以下の全リポジトリをgrepする
EOLや脆弱性などで影響調査をしなければならないとき、よくgit grep
をします。
ただ、organization以下全部調べるとなると、何回clone&grepするの?...と、ウンザリ。
Githubの検索でいいじゃんという話もありますが、本当に全量なのかが怪しい...1
なので、CLI上でGithubのorganization以下の全リポジトリをgrepできるやつを作りました。
インストール
READMEに書いてある方法か、下記の方法でインストールしてください。
- Github Releasesからバイナリをダウンロード
-
PATH
の通った場所に移動 - ファイル名を
git-org
にリネーム
使い方
gitのサブコマンドとして利用する事ができます。
git org grep -o <organization名> -- <git grep に渡すオプションや引数>
例えば、
- organization名 =
yahoojapan
- 検索パターン =
hoge
- ignore case
- 行番号表示
を実行したい場合は、
git org grep -o yahoojapan -- -i -n hoge
とします。
結果はTSV形式で下記のように出力されます。
<organization名>/<リポジトリ名> <file名> <行番号(オプションを指定していない場合は0)> <ヒットした行>
プライベートリポジトリにも対応
環境変数GITHUB_ACCESS_TOKEN
にPersonal Access Tokenをセットすることで、自身が参照できるプライベートリポジトリに対しても実行可能です。
export GITHUB_ACCESS_TOKEN="your_personal_access_token"
Github Enterpriseにも対応
環境変数GITHUB_API_BASE_URL
にGithub EnterpriseのAPIのURLをセットすることで、Github Enterpriseにも実行可能です。
export GITHUB_API_BASE_URL="https://your-ghe/api/v3"
注意
- 一時ディレクトリにorganization以下の全リポジトリをcloneされるため、ディスク容量を圧迫することがあります
- cloneしたリポジトリはコマンド実行開始/終了時に消去されます
- cloneはSSHで行うので予め、ssh-agentなどで鍵を登録しておく必要があります
まとめ
このコマンドを作ったことで、調査は結構捗るようになりました。
よかったら使ってみてください
-
検索インデックスに入っていないのか、サマられているのか、ヒットしないことがある...もしかして、やり方が悪い? ↩