👑

IssueをProjectのフィールドまで複製するGitHubCLI拡張機能を作った

に公開

はじめに

Issueを複製したいけど意外とGitHubのWebページやghコマンドには用意されておらず、
さらに筆者の場合はProjectに関連付いたフィールドもコピーしてほしく手入力するのはかなり面倒でした。
Issue属性のみ複製するCLIやGitHubActionsはありましたが「CLIでProjectのフィールドまで複製する」ものは存在していなかったので自作してみました。

今回作成のは「gh-issue-clone」というGitHub拡張機能です。
https://github.com/muleyuck/gh-issue-clone

このように実行できます
demo.gif

できること

以下のようなLabelsやProjectが紐づいたIssueがあります
複製元Issue

基本的な使い方

IssueのURLを指定することでそのリポジトリに複製したIssueを作成します

❯ gh issue-clone https://github.com/owner/repo/issues/56

タイトル/本文と右部の各属性についても一括でコピーされています

複製後Issue

テンプレートを利用する

また、リポジトリにISSUE_TEMPLATEがあれば指定が可能で、テンプレートの内容を優先しそれ以外の項目を複製します

 gh issue-clone https://github.com/owner/repo/issues/57 --template "Bug report"

本文とLabelsはBug用テンプレートの内容でそれ以外の属性は複製されています
テンプレート付き複製後Issue

インストール

ghコマンドのインストールが必要ですので、公式に従ってインストールください
https://github.com/cli/cli?tab=readme-ov-file#installation

よしなに認証します

 gh auth login
# Projectまで複製する場合は権限の取得が必要です
 gh auth refresh --scopes project

今回作成した拡張機能をインストール

 gh extension install muleyuck/gh-issue-clone

インストールが完了すればgh issue-cloneで利用可能になります

 gh issue-clone --help
NAME:
   issue-clone - clone GitHub issues from a given issue.

USAGE:
   issue-clone [global options] [arguments...]

VERSION:
   v0.2.1


GLOBAL OPTIONS:
   --template string, -t string  Issue Template Name
   --help, -h                    show help
   --version, -v                 print the version

まとめ

このIssueの情報を元に新たなにIssue作りたい、という時に手軽にIssueの複製ができるようになりました。
特にPrijectでタスク管理を行っている場合は痒い所に手が届く拡張機能になって快適さがかなり上がりました。
もし同じ悩みを持っている人役に立てれば嬉しいです。

参考

https://docs.github.com/ja/github-cli/github-cli/creating-github-cli-extensions
https://developer.feedforce.jp/entry/2022/12/04/235514

GitHubで編集を提案

Discussion