LoginSignup
3
1

More than 5 years have passed since last update.

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

Posted at

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

EOLや脆弱性などで影響調査をしなければならないとき、よくgit grepをします。
ただ、organization以下全部調べるとなると、何回clone&grepするの?...と、ウンザリ。

Githubの検索でいいじゃんという話もありますが、本当に全量なのかが怪しい...1
なので、CLI上でGithubのorganization以下の全リポジトリをgrepできるやつを作りました。

インストール

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

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1