GitHub CLIを利用した効率的な複数Issueの移動方法

こんにちは、フロントエンドエンジニアのうじた(@uji_t4)です!

GitHubで作成したIssueを別のリポジトリに移動させたいと思ったことはありませんか?

GitHub Docsを読んでみると、Webブラウザでは一つずつでしか移動させられないようです。

docs.github.com

今回はGitHub CLIを利用して、複数Issueを効率的に別リポジトリに移動させる方法を紹介します。

Issueの移動方法

まず、GitHub CLIを使ったIssueの移動にはDocsに記載されている通りgh issue transferを使用します。 例えば、Issue番号100番をinnovator-japanのtestリポジトリに移動させるには、以下のようにコマンドを実行します。

gh issue transfer 100 innovator-japan/test

Issue番号の取得

移動元リポジトリのIssueをGitHub CLIで取得するには、gh issue listを使用します。 このコマンドを実行すると、以下のようなリストが表示されます。

#102  フッダーの修正  about 5 minutes ago
#101  ヘッダーの修正  about 1 day ago

ここから、Issue番号とIssueタイトルが表示されていることがわかります。

gh issue list --json numberを実行すると、Issueの番号をJSON形式でリストアップできます。

[
  {
    "number": 102
  },
  {
    "number": 101
  }
]

さらに jq コマンドを使用してIssue番号のみを取得することができます。

gh issue list --json number | jq '.[].number'

102
101

このようにして取得した番号をgh issue transferに渡せば、複数のIssueを移動させることができます。

xargsコマンドで、複数Issueの移動をさせる

xargsコマンドでは、コマンドの実行結果を引数にして別のコマンドを実行させることができます。

Issue番号取得の実行結果を引数にして、gh issue transferコマンドを実行すれば、複数のIssueを一度に移動させることが可能です。

gh issue list --json number | jq '.[].number' | xargs -I {} gh issue transfer {} innovator-japan/test

以下のように、移動先のリポジトリで新しいIssue番号が振り分けられて移動が完了したことが確認できます。

https://github.com/innovator-japan/test/issues/1
https://github.com/innovator-japan/test/issues/2

まとめ

WebブラウザのGitHub上で複数のIssueを別のリポジトリに移動させる作業は、通常の方法では面倒かつ時間がかかります。

GitHub CLIといくつかのコマンドを利用することで、複数のIssueを効率的に移動させることが可能です。

リポジトリの整理やプロジェクト管理の効率化にぜひ利用してみてください。