GitHub CLIを使ってコマンドラインからイシュー、プルリクを検索、表示してみる
はじめに
今年の 2 月に公開されたばかりの GitHub CLI というコマンドラインツールについて使ってみたので紹介してみます。
今までは hubコマンド を使っていましたが、話題になっているぐらいなので比較して有用性が高いはず、と思って使ってみました。
EC-CUBE の GitHub リポジトリのイシューを覗き見することが最近何度かあったため、イシューを検索、表示してみます。
検証環境
$ uname -moi
x86_64 MacBookPro11,4 Darwin
$ zsh --version
zsh 5.8 (x86_64-apple-darwin18.7.0)
インストール
Mac はかんたんですね。
今日現在、公式ページには以下のコマンドでインストールできるとありました。
$ brew install github/gh/gh
セットアップ
$ gh issue list
初めてコマンドを実行する場合は、 GitHub CLI が GitHubAPI を呼び出すための権限を付与する必要があるようです。
以下のメッセージが表示されます。
Notice: authentication required
Press Enter to open github.com in your browser...
Enter キーを押すとブラウザが起動し、以下のようなページが表示されます。
GitHub CLI のアクセスを許可します。
実行結果はというと、自分用のプライベートリポジトリに対して実行したため、そもそも issude が存在せず何も表示されませんでした。
There are no open issues in genzouw/bin
改めて別のリポジトリで実行してみることにします。
$ git clone git://github.com/EC-CUBE/ec-cube.git
Cloning into 'ec-cube'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 273474 (delta 3), reused 5 (delta 0), pack-reused 273461
Receiving objects: 100% (273474/273474), 130.05 MiB | 1.51 MiB/s, done.
Resolving deltas: 100% (194894/194894), done.
hub clone git://github.com/EC-CUBE/ec-cube.git 8.80s user 3.79s system 13% cpu 1:30.63 total
# 移動
$ cd ec-cube
イシューの一覧表示
$ gh issue list
Showing 30 of 288 issues in EC-CUBE/ec-cube
#4498 eccube_max_total_feeを超える価格のもの... (bug:Low) about 2 days ago
#4497 Customizeディレクトリ配下にも Doctrine... (Status: discussion, enhancement) about 10 days ago
#4494 WhereCustomizer にて WhereClause で AN... (affected:plugin) about 11 days ago
#4493 docker環境使用時 画像処理時にErrorになる about 11 days ago
#4492 管理画面のテンプレートのアップロードペ... (affected:admin_template) about 11 days ago
#4491 プラグインからのPurchaseFlowカスタマイ... (question) about 11 days ago
#4488 [API] GraphQLでDateTimeを取得するとエ... about 17 days ago
#4487 商品購入/ご注文確認に「閉じspan」だけ... (affected:template, bug:Low) about 18 days ago
#4486 購入時の在庫数処理を改善したい (Status: discussion) about 18 days ago
#4484 受注CSV、配送CSVにおいて「お届け時間ID... (affected:外部仕様, bug:Low) about 18 days ago
#4480 商品一覧とお気に入り一覧のデザインが違う (css) about 18 days ago
#4478 ご注文履歴詳細で注文概要ボックスがスク... (bug:Low) about 29 days ago
#4476 dtb_product_stockとdtb_product_classの... (Status: discussion) about 1 month ago
#4475 税率設定の適用日時エラーメッセージが設... (bug:Low) about 1 month ago
#4473 管理画面の各ページで「登録」ボタンが何... about 1 month ago
#4470 Docker環境でxdebugを簡単に使用できるよ... about 1 month ago
#4469 商品CSV出力時の区切り文字を変更 about 1 month ago
#4467 規格2まである商品をカートに追加後、ブ... (bug:Low) about 1 month ago
#4466 カートに追加できなくてもブラウザバック... (bug:Low) about 1 month ago
#4458 【EC-CUBE4】リンク型決済において、購入... (bug:Middle) about 1 month ago
#4457 Chrome80のSameSiteの影響で3Dセキュア等... (bug:Critical) about 1 month ago
#4456 デザインテンプレートのインストール時の... (improvement) about 1 month ago
#4447 Web API仕様 (Status: discussion, affected:外部仕様... about 1 month ago
#4445 dtb_customer の排他制御 (bug:Middle) about 1 month ago
#4435 大量データによりCSVのダウンロードメモ... (bug:Low) about 1 month ago
#4428 【EC-CUBE4】コンテンツ管理>ページ管理... (improvement) about 2 months ago
#4427 Oracle Database対応について (Status: discussion, enhancement) about 3 months ago
#4426 売上状況が9時間ずれる問題 (bug:Low) about 2 months ago
#4420 定休日管理・カレンダーを4.0系に移植 (Status: discussion, enhancement) about 3 months ago
#4416 Safariで管理画面から認証キーを発行でき... (bug) about 3 months ago
ちなみに出力される内容は以下のようにカラーリングされていて見やすいです。
デフォルトで 30 件表示されます。
表示件数を変更
デフォルトの 30 件から変更してみます。
5 件 表示してみます。
$ gh issue list --limit 5
Showing 5 of 288 issues in EC-CUBE/ec-cube
#4498 eccube_max_total_feeを超える価格のもの... (bug:Low) about 2 days ago
#4497 Customizeディレクトリ配下にも DoctrineM... (Status: discussion, enhancement) about 10 days ago
#4494 WhereCustomizer にて WhereClause で AND... (affected:plugin) about 11 days ago
#4493 docker環境使用時 画像処理時にErrorになる about 11 days ago
#4492 管理画面のテンプレートのアップロードペ... (affected:admin_template) about 11 days ago
今度は 35 件 表示してみます。
$ gh issue list --limit 35
Showing 35 of 288 issues in EC-CUBE/ec-cube
#4498 eccube_max_total_feeを超える価格のもの... (bug:Low) about 2 days ago
#4497 Customizeディレクトリ配下にも Doctrine... (Status: discussion, enhancement) about 10 days ago
#4494 WhereCustomizer にて WhereClause で AN... (affected:plugin) about 11 days ago
#4493 docker環境使用時 画像処理時にErrorになる about 11 days ago
#4492 管理画面のテンプレートのアップロードペ... (affected:admin_template) about 11 days ago
#4491 プラグインからのPurchaseFlowカスタマイ... (question) about 11 days ago
#4488 [API] GraphQLでDateTimeを取得するとエ... about 17 days ago
#4487 商品購入/ご注文確認に「閉じspan」だけ... (affected:template, bug:Low) about 18 days ago
#4486 購入時の在庫数処理を改善したい (Status: discussion) about 18 days ago
#4484 受注CSV、配送CSVにおいて「お届け時間ID... (affected:外部仕様, bug:Low) about 18 days ago
#4480 商品一覧とお気に入り一覧のデザインが違う (css) about 18 days ago
#4478 ご注文履歴詳細で注文概要ボックスがスク... (bug:Low) about 29 days ago
#4476 dtb_product_stockとdtb_product_classの... (Status: discussion) about 1 month ago
#4475 税率設定の適用日時エラーメッセージが設... (bug:Low) about 1 month ago
#4473 管理画面の各ページで「登録」ボタンが何... about 1 month ago
#4470 Docker環境でxdebugを簡単に使用できるよ... about 1 month ago
#4469 商品CSV出力時の区切り文字を変更 about 1 month ago
#4467 規格2まである商品をカートに追加後、ブ... (bug:Low) about 1 month ago
#4466 カートに追加できなくてもブラウザバック... (bug:Low) about 1 month ago
#4458 【EC-CUBE4】リンク型決済において、購入... (bug:Middle) about 1 month ago
#4457 Chrome80のSameSiteの影響で3Dセキュア等... (bug:Critical) about 1 month ago
#4456 デザインテンプレートのインストール時の... (improvement) about 1 month ago
#4447 Web API仕様 (Status: discussion, affected:外部仕様... about 1 month ago
#4445 dtb_customer の排他制御 (bug:Middle) about 1 month ago
#4435 大量データによりCSVのダウンロードメモ... (bug:Low) about 1 month ago
#4428 【EC-CUBE4】コンテンツ管理>ページ管理... (improvement) about 2 months ago
#4427 Oracle Database対応について (Status: discussion, enhancement) about 3 months ago
#4426 売上状況が9時間ずれる問題 (bug:Low) about 2 months ago
#4420 定休日管理・カレンダーを4.0系に移植 (Status: discussion, enhancement) about 3 months ago
#4416 Safariで管理画面から認証キーを発行でき... (bug) about 3 months ago
#4413 商品規格登録画面での規格選択時の選択肢... (improvement) about 3 months ago
#4411 URLからuser_data消す about 3 months ago
#4408 アップデートでcustomize.js/customize.c... (affected:template, css, improvement) about 3 months ago
#4402 dtb_cart に該当会員のカート情報が存在... (Status: discussion, Status: needs-rev... about 3 months ago
#4399 Symfony 4.4 への対応 (enhancement) about 3 months ago
どこまで表示できるかと思って試してみたところ、どうやらすべてのイシューまで表示できそうです。
$ gh issue list --limit 500 | wc -l
Showing 288 of 288 issues in EC-CUBE/ec-cube
288
「作成者」で絞り込み
僕( GitHub アカウントは genzouw)が上げたイシューがあったかな?と思い検索してみました。
--author genzouw
で、 genzouw さんがあげたイシューを検索できます。
$ gh issue list --author genzouw
Showing 1 of 1 issue in EC-CUBE/ec-cube that matches your search
#4390 masterブランチを作成し、defaultブランチとして設定してほしい。 (improvement) about 3 months ago
3 ヶ月前にイシューを上げていたみたいですね。そんな記憶もあるような無いような。
ちなみに、自分が作成したイシュー、あるいは自分がアサインされているイシューは git issue status
コマンドでも検索できます(というかこっちのほうが見やすい) 。
$ gh issue status
Relevant issues in EC-CUBE/ec-cube
Issues assigned to you
#4390 masterブランチを作成し、defaultブランチとして設定してほしい。 (improvement) about 3 months ago
Issues mentioning you
There are no issues mentioning you
Issues opened by you
#4390 masterブランチを作成し、defaultブランチとして設定してほしい。 (improvement) about 3 months ago
「ステータス」で絞り込み
イシューのステータスで絞り込むこともできます。
--state closed
とすると、クローズしたイシューが表示されます。
ステータスには open
/ closed
/ all
の 3 つが指定できます。デフォルトは open
のみなので、全て表示させたい場合は明示的に --state all
オプションを付与するひつようがあります。
$ gh issue list --limit 5 --state closed
Showing 5 of 1101 issues in EC-CUBE/ec-cube that match your search
#4463 4.0.2から4.0.3にアップデートするとシステムエラーになる (bug:High) about 1 month ago
#4461 `Doctrine\DBAL\Types` を拡張している Symfony bundle を利用するとエラーが発生する (bug:Low) about 10 days ago
#4450 管理画面受注一覧 入金日(終了)のラベル間違い (bug:Low) about 1 month ago
#4448 管理画面商品一覧の件数を変更すると受注一覧の件数も変更される (bug:Low) about 1 month ago
#4443 不要な?FormTypeクラスが存在しているため、見直し検討してもらいたい (bug:Low) about 1 month ago
「ラベル」で絞り込み
イシューに割り当てられている「ラベル」で絞り込みできます。
$ gh issue list --limit 10 --label 'bug:Low'
Showing 10 of 39 issues in EC-CUBE/ec-cube that match your search
#4498 eccube_max_total_feeを超える価格のものを... (bug:Low) about 2 days ago
#4487 商品購入/ご注文確認に「閉じspan」だけ残っ... (affected:template, bug:Low) about 18 days ago
#4484 受注CSV、配送CSVにおいて「お届け時間ID」... (affected:外部仕様, bug:Low) about 18 days ago
#4478 ご注文履歴詳細で注文概要ボックスがスクロ... (bug:Low) about 29 days ago
#4475 税率設定の適用日時エラーメッセージが設定... (bug:Low) about 1 month ago
#4467 規格2まである商品をカートに追加後、ブラ... (bug:Low) about 1 month ago
#4466 カートに追加できなくてもブラウザバック時... (bug:Low) about 1 month ago
#4435 大量データによりCSVのダウンロードメモリオ... (bug:Low) about 1 month ago
#4426 売上状況が9時間ずれる問題 (bug:Low) about 2 months ago
#4369 ルート以下のディレクトリにインストールし... (bug:Low) about 5 months ago
利用されているラベルを把握しておかないと検索できないので素人にはおすすめはしません。
使われている頻度の高いラベルを確認するコマンドも掲載しておきます 。
# 使われている頻度の高いラベルを確認
$ gh issue list --state all --limit 1000 \
| cut -f3 \
| grep -o '[^ ,]\+' \
| sort \
| uniq -c \
| sort -nr
Showing 1000 of 1389 issues in EC-CUBE/ec-cube that match your search
455 enhancement
324 bug
51 bug:Low
50 bug:Middle
49 Status:
48 discussion
40 question
40 documentation
29 experimental
27 duplicate
17 軽減税率対応
14 bug:High
7 worksforme
6 wontfix
6 improvement
5 affected:plugin
5 Easy
2 …
2 affected:admin_template
1 needs-review
1 affected:外部仕様
たまに日本語が混じっています。
イシューの詳細表示
gh issue list
を使って確認したイシューの一覧について、詳細を確認してみます。
$ gh issue list --limit 3
Showing 3 of 288 issues in EC-CUBE/ec-cube
#4498 eccube_max_total_feeを超える価格のもの... (bug:Low) about 2 days ago
#4497 Customizeディレクトリ配下にも DoctrineM... (Status: discussion, enhancement) about 10 days ago
#4494 WhereCustomizer にて WhereClause で AND... (affected:plugin) about 11 days ago
1件目の #4498
について詳細表示してみます。
gh issue view <ISSUE_NO>
コマンドを使います。
$ gh issue view 4498
eccube_max_total_feeを超える価格のものをカートに入れるとInvalidArgumentExceptionが発生する
opened by yoshiaki-natsume. 0 comments. (bug:Low)
## 概要(Overview)
カートに金額が大きい商品を入れると500エラーが発生します
stacktraceは以下の内容になります
InvalidArgumentException:
Entity has to be managed or scheduled for removal for single computation
Eccube\Entity\CartItem@00000000711c8f360000000061f5e310
...省略
やはり外コマンド同様、カラーリングされていて見やすいです。
イシューの内容は大概長いので、 less
コマンドで繋がてやるのが良いでしょう。カラーリングも保持されたままで見やすいです。
$ gh issue view 4498 | less
ブラウザで表示する
やっぱり詳細内容はブラウザで開いてみたいよね、という場合には、 先のコマンドに --web
オプションを付与します。
$ gh issue view 4498 --web
Opening https://github.com/EC-CUBE/ec-cube/issues/4498 in your browser.
面倒くさかったのでコマンドラインの実行履歴から前回のコマンドを呼び出して、後ろに --web
をつけましたが問題なく動作しました。
そもそも git clone
必要なの?
はじめに git clone
して、イシュー検索の対象リポジトリをクローンしてきました。
実はこちら、不要です。
--repo
オプションを付与すれば対象リポジトリを指定できます。--repo
オプションがない場合には、カレントプロジェクトを対象リポジトリとして利用するということですね。
$ pwd
/Users/genzouw
$ gh issue list --limit 3
fatal: not a git repository (or any of the parent directories): .git
git: exit status 128
$ gh issue list --repo EC-CUBE/ec-cube --limit 3
Showing 3 of 288 issues in EC-CUBE/ec-cube
#4498 eccube_max_total_feeを超える価格のもの... (bug:Low) about 2 days ago
#4497 Customizeディレクトリ配下にも DoctrineM... (Status: discussion, enhancement) about 10 days ago
#4494 WhereCustomizer にて WhereClause で AND... (affected:plugin) about 11 days ago
プルリクエストの一覧表示、詳細表示もイシューとほぼ同様
プルリクエストの一覧表示、詳細表示も今まで見てきたものと同様です ( issue
が pr
になっただけです ) 。
# 一覧表示
$ gh pr list
Showing 17 of 17 pull requests in EC-CUBE/ec-cube
#4496 Customizeディレクトリでもservices.yamlが定義できるように機能拡張 okazy:feat/load-customize-config
#4495 TemplateEventからTwigのコードが取れない不具合を修正 kiy0taka:fix/get_code_in_template_event
#4490 【fix】受注登録画面の利用ポイント(use_point)フォームのバリデーションをrequire=trueに修正 huwamoko6210:use_point_validation_fix
#4485 管理画面ダッシュボードの売り上げ状況をイベントでのカスタマイズした際の、数値とグラフの集計ロジックを合わせる okazy:fix-admin_index_sales_event
#4483 eccube:composer:require-already-installedコマンドで404エラーが発生するのを修正 kiy0taka:fix/require-already-installed-404
#4479 インストール直後の税率を8から10に変更。 genzouw:hotfix/change_default_tax_rule
#4472 fix save and close btn in admin/shipping, /admin/product/product/new,… kifr:fix_save_and_close_btn
#4468 fix #4466 「カートに追加しました」とメッセージが表示される不具合を修正 U-Mebius:fix/modal
#4465 管理画面トップ 売上状況が9時間ずれる問題修正 U-Mebius:fix/admin/sales
#4455 ログイン失敗するとお気に入り登録できない問題の修正 U-Mebius:fix/login/_target_path
#4452 注文手続き中に税率が変更された場合の反映 U-Mebius:fix/shopping/product_tax
#4440 メールテンプレートを新規登録/削除できるようにする oywc410:4398
#4433 ページ管理の編集対象に会員登録(確認ページ)を加える #4428 oywc410:4428
#4412 URLからuser_data消す tao-s:delete-user_data
#4409 [WIP] Symfony4.4 対応 nanasess:improve/symfony4.4
#4349 商品画像アップロード時のリサイズ処理 Rights1995:4.0_rs
#4199 商品CSVに削除済みの商品規格が含まれる #4190 yusukeito58:issue4190
# 3件のみ表示
$ gh pr list --limit 3
Showing 3 of 17 pull requests in EC-CUBE/ec-cube
#4496 Customizeディレクトリでもservices.yamlが定義できるように機能拡張 okazy:feat/load-customize-config
#4495 TemplateEventからTwigのコードが取れない不具合を修正 kiy0taka:fix/get_code_in_template_event
#4490 【fix】受注登録画面の利用ポイント(use_point)フォームのバリデーションをrequire=trueに修正 huwamoko6210:use_point_validation_fix
# マージ済みのプルリクエストを3件表示
$ gh pr list --limit 3 --state merged
Showing 3 of 2633 pull requests in EC-CUBE/ec-cube that match your search
#4489 互換性のためにEccube\Twig\Environmentクラスは残す kiy0taka:dev/revert_twig_env
#4482 CustomerTypeTestのテストの判定が間違っていたので修正 okazy:fix_customer-type-test
#4481 管理画面のデフォルトのID/Passwordの設定例を.env.distに追加 okazy:add-admin-info-to-env
# #4489のプルリクエストを詳細表示
$ gh pr view 4489
互換性のためにEccube\Twig\Environmentクラスは残す
kiy0taka wants to merge 1 commit into 4.0 from dev/revert_twig_env
## 概要(Overview・Refs Issue)
https://github.com/EC-CUBE/ec-cube/pull/4362 の修正で Eccube\Twig\Environment
は不要になったが、プラグインやカスタマイズで使われていので、互換性保持のためにクラスは残す。
## 方針(Policy)
今後利用する場合は、 Twig\Environment を推奨。
## 実装に関する補足(Appendix)
## テスト(Test)
## 相談(Discussion)
## マイナーバージョン互換性保持のための制限事項チェックリスト
[✓] 既存機能の仕様変更
[✓] フックポイントの呼び出しタイミングの変更
[✓] フックポイントのパラメータの削除・データ型の変更
[✓] twigファイルに渡しているパラメータの削除・データ型の変更
[✓] Serviceクラスの公開関数の、引数の削除・データ型の変更
[✓] 入出力ファイル(CSVなど)のフォーマット変更
## レビュワー確認項目
[✓] 動作確認
[✓] コードレビュー
[✓] E2E/Unit テスト確認(テストの追加・変更が必要かどうか)
[✓] 互換性が保持されているか
[✓] セキュリティ上の問題がないか
View this pull request on GitHub: https://github.com/EC-CUBE/ec-cube/pull/4489
やはりこちらもカラーリング表示されるため見やすい。
GitHub 上のリポジトリページをブラウザで開く
地味に便利です。
やはりブラウザのほうが見やすかったり、開発に明るくないメンバーと話をするときに GitHub ページを開いて一緒に見ながら話をしたりしたい場合もあります。
# カレントディレクトリのGitHubリポジトリをブラウザで開く
$ gh repo view -w
ひとこと
今回は取り上げていませんが、リポジトリの作成、クローン、フォークもできます。
プライベートリポジトリ作成も無料化されてから、僕は Bitbucket から GitHub に完全移行しました。
関連記事

コマンドラインで “Docker Hub” にアップロード済みのDocker Repositoryを削除する方法
はじめに 無料でDockerイメージを公開できるサービス Docker Hub ...

treeコマンドでフォルダ構成をツリー表示しつつ所有者・パーミッションを表示
はじめに Linuxにおける tree コマンドは、フォルダ構成を視覚的に確認す ...

Gitの作業ディレクトリからコマンドでデフォルトブランチ名を取得する
はじめに git clone した作業ディレクトリで作業中しているとき、デフォル ...

シェルスクリプトで`while read`ループすると最終行が読み込まれない場合への対処
はじめに シェルスクリプトでファイルの各行に対して複雑なロジックを書かざるを得な ...

Github上のOSSにプルリクエストをあげるための手順をまとめました
はじめに 以下のOSSに対して、プルリクエストを上げたいと思ったのですが、「この ...
ディスカッション
コメント一覧
まだ、コメントがありません