こんにちは、フロントエンドエンジニアのうじた(@uji_t4)です!
GitHubで作成したIssueを別のリポジトリに移動させたいと思ったことはありませんか?
GitHub Docsを読んでみると、Webブラウザでは一つずつでしか移動させられないようです。
今回は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を効率的に移動させることが可能です。
リポジトリの整理やプロジェクト管理の効率化にぜひ利用してみてください。