typememo.jp

Gitlab のイシューを github-csv-tools を使って Github にインポートする方法

2020.11.08

#tech#github#gitlab#issue
Takeru Yamada

Contents


はじめに

こんにちは,typememo こと 山田武尊 です.

この記事は Gitlab のイシューをエクスポートし Github にインポートする方法の解説記事です.

Gitlab から Github へ乗り換える時にイシューが引き継げなくて困っている, そんな人には是非読んでもらいたい記事です.

そもそも Gitlab とか Github とかなんですか?

という状態の方は以下の書籍をチラ見していただければ,雰囲気掴めるかと思います.

おすすめ書籍:

それでは,早速参りましょう!


Gitlab のイシューをエクスポートする

まずは Gitlab のイシューをエクスポートするところからですね.

Gitlab のイシューページを表示してください.

イシューページの上部メニュバーに Export as CSV アイコンをクリックしてください.


gitlab export issue as csv Figure.1 Gitlab export as csv


Export as CSV アイコンをクリックすると次のダイアログが表示されます.

Export issues をクリックすると,Gitlab に登録しているメールアドレスに csv ファイルが添付されたメールが送信されます.

メール受信トレイを確認してみてください.


gitlab export issues confirm

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-toolsnpm コマンドでインストールします.

$ 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 の列ヘッダが TitleDescription のように先頭が大文字だからです.

import.js#L23var titleIndex = cols.indexOf("title"); となっており Title では認識されないんですよね.

そして import.js#L30if (titleIndex === -1)True になってエラーメッセージを出力して exit(1) する, という仕組みになっています.

その場しのぎですが csv ファイルの Titletitle に変更すればエラーにならず実行は完了します. しかし,それだけでは Description が認識されないのでタイトルだけのイシューが生成されます.

csv の列ヘッダを全て小文字に変換してしまえばこのようなバグが発生しなくなるであろうと考えまして, 2020/11/07 に PR#33 を出しました.

今後,レビュープロセスが進んでプルリクエストが受理されることを願うばかりです.

もしもプルリクエストが受理されたら初めての OSS コントリビュートになります. その時は,初コントリビュート記事を書きます. 楽しみです. 気長に待ちます!


おわりに

github-csv-tools を使って Gitlab からエクスポートしたイシューを Github にインポートする方法についての紹介でした.

いかがだったでしょうか?

少しでもタメになったと思ってくだされば幸いです.

同じ問題を抱えた人にこの記事が届いて欲しいので,どこかでシェアしていただけるとありがたいです.

みなさんの力を少しばかり貸してください!

最後までお読みいただきありがとうございました.

山田武尊を応援していただけるととても嬉しいです!


愛用品