GitHubのリポジトリ(Issue)移行
移行方法
移行プログラム
処理概要
- GitHub APIを使用して移行元からIssue周りのデータをGetし、移行先のリポジトリへPostしていく流れ
- Issueに必要なマイルストーンやラベルは最初にまとめて移行する
- Issueは1件ずつPostして、それに紐づくコメントもその都度取得してPostする
- Issueもある程度の件数になると、GitHubAPIが途中でエラーになることがあるため、簡易的なリトライ処理を実装
- リトライ処理時は、前回とまったIssue番号を設定して、処理フローを切り替えて再実行とする(簡易的なので、コメントアウトを切り替えて対応)
プログラムの仕様
移行スクリプトを書いていく中ですべて完全に移行するのは難しく、割り切りが必要になった。
- IssueのLabelとMilestoneはすべて移行する
- Issueの移行は、移行元と移行先で同一のIssue番号を付与する
- Postした順にIssue番号が採番されるため、移行元からIssueデータをソートして取得
- Pull Requestは簡易的な移行とする
- GitHubのIssueとPull Requestは1種類のidで管理されており、移行元と移行先のIssue番号をあわせるため、移行元でPull Requestだったものは、タイトルにその旨記載して空のIssueとして登録
- Issueのコメントで使用している画像添付については、移行を諦める