GitHubは先頃、GitHub CLIをベータリリースした。コマンドラインからイシュー操作やプルリクエストの可能なオープンソースツールだ。Go言語で記述されており、Linux、macOS、Windowsにインストールすることができる。
GitHub CLIを使用することにより、オープンイシューの一覧と担当者ラベルやステータスによるフィルタリング、プルリクエストの生成、プルリクエストをローカルにチェックアウト、作業ステータスの表示などが可能になる。
例えば、プルリクエストをローカルでチェックアウトするには、次のように実行すればよい。
gh pr checkout <PR-number>
これにより、PRの変更を含んだローカルブランチが生成される。同じように、次のコマンドでプルリクエストの生成を行うことができる。
gh pr create
実行すると、コマンドラインからタイトルと説明の入力を求めた上で、PRがリモートに生成される。別の方法として、フラグを使用してタイトルと説明を指定することも可能だ。
gh issue create -t "Pull request title" -b "Pull request body"
プルリクエスト番号が既知であれば、次のコマンドでそのサマリにアクセスすることができる。
gh issue view <PR-number> --preview
前述のように、イシューやプルリクエストを一覧表示することも可能だ。最も最近のオープンイシューを一覧表示するには、issues list
を実行すればよい。このコマンドは、フィルタリングオプションもサポートしている。
gh issue list
gh issues list --label "critical"
プルリクエストの一覧とフィルタリングも同じように可能だ。
gh pr list --state closed --assignee user
GitHub CLIの提供する最後のコマンドはstatus
だ。このコマンドは、ブランチの状態やオープン中のプルリクエスト、レビューアとして要求されたプルリクエストなどを表示して、作業のサマリを可視化する。
GitHub CLIはgit
コマンドラインツールとの併用を目的するもので、Git専用ワークフローの置き換えのためのものではない。
GitHub CLIより前には非公式のhub
ツールがあり、コマンドラインベースのGitHubイシューへのアクセスとプルリクエストがすでに提供されていた。ただしhub
は、GitHub CLIのアプローチとはまったく違い、git
コマンドをラップした上に、GitHub特有の機能を操作する手段を提供するという方法を採用していた。hub
メンテナのMislav Marohnić氏は、自身のhub
に関わる開発履歴を詳しく記録しており、その中には将来的なヒントとして、GitHubが自身で公式CLIツールを用意するという現在の状況も記されている。
いつものように、GitHubの発表には開発者コミュニティから多数の反応があった。肯定的な意見と並んで、一部の開発者からは、現在のGitHub CLIに実装されている機能の制限に対する批判もある。例として、リストやフィルタによって返される結果数の制限、イシューとPRデータのローカルレプリカの欠如による動作の遅さ、他のコマンドラインツールと合わせた自動化ワークフローへの組み込みが困難であること、などがある。