gitのリポジトリの情報を取得したい【GitHub/Bitbucket】


コピペが苦手。なのでリポジトリの情報はコマンドラインから取得することにしました。
参考:
https://docs.github.com/ja/rest/guides/getting-started-with-the-rest-api
https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D

GitHub Docsが分かりやすくマニュアル化されていて、これを参考にBitbucketも同じ感じで対応したらできました。

事前準備

どちらのサービスでもコマンドラインからhttpで接続し情報を取得します。
接続の際にはREST APIを使用する為、認証の為のトークンが必要です。

トークン作成画面へのリンク

GitHub
https://github.com/settings/tokens
Bitbucket
https://bitbucket.org/account/settings/app-passwords/

どちらのサービスでも、トークン作成時にr/w権限などを設定できます。
尚、このトークンで取得できる情報は自分にアクセス権限が与えられているリポジトリに対してのみでした。
試していないけど、ワークスペースの管理者ならワークスペース単位のトークンも作成できそうな画面を見たので、そっちを使う方法もありそう。

情報の整形

json形式での情報取得になる為、出力されたものの整形にjqコマンドを使用します。

//macでhomebrewが使える前提
brew install jq

リポジトリ名取得

GitHub

curl -u <username>:<token> https://api.github.com/orgs/<workspace>/repos | jq -r '.[].name'

Bitbucket

Bitbucketはプロジェクト名も一緒に取得するパターンでコマンド作成。
また、取得できるvalue[]がデフォルトだと10のようなので100に変更し更にリポジトリ名でソート。

curl -u <username>:<token> 'https://api.bitbucket.org/2.0/repositories/<workspace>?pagelen=100&page=1&sort=name' | jq '.values | map({ name : .name , group: .project.name })'

インデックスの出力が不要な場合

curl -u <username>:<token> 'https://api.bitbucket.org/2.0/repositories/<workspace>?pagelen=100&page=1&sort=name' | jq '.values[] | .name , .project.name'