Contents
はじめに
こんにちは,たける@typememo です.
この記事は Gitlab のイシューをエクスポートし Github にインポートする方法の解説記事です.
Gitlab から Github へ乗り換える時にイシューが引き継げなくて困っている, そんな人には是非読んでもらいたい記事です.
そもそも Gitlab とか Github とかなんですか?
という状態の方は以下の書籍をチラ見していただければ,雰囲気掴めるかと思います.
おすすめ書籍:
- GitHub実践入門
Github のことをまるっと知りたい方向け - GitLab実践ガイド
Gitlab のことをまるっと知りたい方向け
それでは,早速参りましょう!
Gitlab のイシューをエクスポートする
まずは Gitlab のイシューをエクスポートするところからですね.
Gitlab のイシューページを表示してください.
イシューページの上部メニュバーに Export as CSV
アイコンをクリックしてください.
Export as CSV
アイコンをクリックすると次のダイアログが表示されます.
Export issues
をクリックすると,Gitlab に登録しているメールアドレスに
csv ファイルが添付されたメールが送信されます.
メール受信トレイを確認してみてください.
Figure.2 Gitlab export issues confirm
以下では,csv ファイルが ~/Downloads
ディレクトリに保存されている前提で話を進めます.
github-csv-tools でイシューをインポートする
Github にイシューをインポートするには github-csv-tools を使いました.
github-csv-tools
という名前からイシュー要素が感じ取れませんが,イシューをハンドリングできます.
早速,インストールします.
インストールするには npm
コマンドでインストールします.
もし npm
コマンドをインストールされていない方は,
asdf node.js / npm のバージョン管理方法
を参照して npm
コマンドを使えるようにしてください.
npm
コマンドがインストールされているかどうかは $ which npm
で確認できます.
ということで github-csv-tools
を npm
コマンドでインストールします.
$ npm install -g github-csv-tools
github-csv-tools
をインストールしたら
$ githubCsvTools /path/to/example.csv
と実行すればイシューがインストールできます.
$ githubCsvTools ~/Downloads/example.csv
token (get from https://github.com/settings/tokens): ??????????
user or organization: ??????????
repository: ??????????
Created ??? issues, and had 0 failures.
❤ ❗ If this project has provided you value, please ⭐ star the repo to show your support: ➡ https://github.com/gavinr/github-csv-tools
途中 Github の token を要求されますので https://github.com/settings/tokens にアクセスして適当な名前の token を生成してくださいませ.
何も問題がなければ
Created ??? issues, and had 0 failures.
というログが出力されます.
しかし,おそらくエラーメッセージが出力されたことでしょう.
多分エラーメッセージは
Title required by GitHub, but not found in CSV.
でしょう.
筆者もこのエラーに遭遇しました.
以下に,そのエラーの対処方法を書いておきます.
エラーハンドリング
Gitlab からエクスポートされたイシューを Github にインポートしようとした時のエラー対処の記録です.
2020/11/08 時点で遭遇したエラーは Title
に関するエラー1つだけです.
もし新たなエラーに遭遇した場合は追記します.
Title required by GitHub, but not found in CSV
このエラーは Gitlab からエクスポートしたイシューをインポートしようとすると発生します.
こんな感じのエラーメッセージが出力されているのではないでしょうか?
$ githubCsvTools ~/Downloads/example.csv
token (get from https://github.com/settings/tokens): ??????????
user or organization: ??????????
repository: ??????????
Title required by GitHub, but not found in CSV.
理由は csv の列ヘッダが Title
や Description
のように先頭が大文字だからです.
import.js#L23
で var titleIndex = cols.indexOf("title");
となっており Title
では認識されないんですよね.
そして import.js#L30
で if (titleIndex === -1)
が True
になってエラーメッセージを出力して exit(1)
する,
という仕組みになっています.
その場しのぎですが csv ファイルの Title
を title
に変更すればエラーにならず実行は完了します.
しかし,それだけでは Description
が認識されないのでタイトルだけのイシューが生成されます.
csv の列ヘッダを全て小文字に変換してしまえばこのようなバグが発生しなくなるであろうと考えまして, 2020/11/07 に PR#33 を出しました.
今後,レビュープロセスが進んでプルリクエストが受理されることを願うばかりです.
もしもプルリクエストが受理されたら初めての OSS コントリビュートになります. その時は,初コントリビュート記事を書きます. 楽しみです. 気長に待ちます!
おわりに
github-csv-tools
を使って Gitlab からエクスポートしたイシューを
Github にインポートする方法についての紹介でした.
いかがだったでしょうか?
少しでもタメになったと思ってくだされば幸いです.
同じ問題を抱えた人にこの記事が届いて欲しいので,どこかでシェアしていただけるとありがたいです.
みなさんの力を少しばかり貸してください!
最後までお読みいただきありがとうございました.
愛用品
- Xiser Pro Trainer (ステッパー)
- HHKB Professional 墨 (キーボード)
- HHKB キートップセット 白 (キートップ)
- Apple Magic Mouse 2 (マウス)
- Apple MacMini (PC)
- iiyama Display 27inch FullHD (ディスプレイ)
- KINTO UNITEA 550ml (コップ)