Git
GitHub

Githubのorganization以下の全リポジトリをgrepする


Githubのorganization以下の全リポジトリをgrepする

EOLや脆弱性などで影響調査をしなければならないとき、よくgit grepをします。

ただ、organization以下全部調べるとなると、何回clone&grepするの?...と、ウンザリ。

Githubの検索でいいじゃんという話もありますが、本当に全量なのかが怪しい...1

なので、CLI上でGithubのorganization以下の全リポジトリをgrepできるやつを作りました。

https://github.com/yhinoz/git-org


インストール

READMEに書いてある方法か、下記の方法でインストールしてください。



  1. Github Releasesからバイナリをダウンロード


  2. PATHの通った場所に移動

  3. ファイル名を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などで鍵を登録しておく必要があります


まとめ

このコマンドを作ったことで、調査は結構捗るようになりました。

よかったら使ってみてください :kissing_heart:





  1. 検索インデックスに入っていないのか、サマられているのか、ヒットしないことがある...もしかして、やり方が悪い?