Edited at

githubのissueを抜き出す(GHE → gitlabへ移行したい)

More than 5 years have passed since last update.


やりたいこと

とある事情で github enterprise から gitlab へリポジトリを移行する作業をすることになりました

リポジトリの移行はググれば見つかるのですが、issueとかwikiの移行方法は中々みつからず…

同じとこで困った方のために

--追記

コメントで頂いた情報を元に、リポジトリとwikiも取得するコードを追加しました


できたこと

とりあえずプログラムでissueを抜き出して、ファイルに保存しておくところまでできました

これでいつでも解約できるぜ!! v(´∀`*v)ピース

肝心の移行ですが、gitlab側の環境がある程度完成してからでないとやれないので保留してます

例えば、githubのissueにアサインされてるgithubアカウントはgitlab側には存在しません

gitlabリポジトリでも同じメンバーで開発するとして、githubのアカウントとgitlabのアカウントをひも付けする対応表みたいなの作らないといけないよなぁと思いました

その辺のアカウントの移行まで済んだら続きやろうかなという感じです

gitlab APIでissueの追加ができるっぽいので、とりあえず手元にgithubから抜き出したissueデータがあればいつでもやれそうかなと


コード

リポジトリはこちら

https://github.com/abeyuya/github-issue-getter

--追記

コメントで頂いた情報を元に、リポジトリとwikiも取得するコードを追加しました

こちらのコード参考にしました

https://gist.github.com/tkarpinski/2369729

rubyです

octokit使ってます

https://github.com/octokit/octokit.rb

おれがガンダムだ


ちょっと解説

オリジナルのコードでは抜き出したissueの必要なデータをcsvに整形して保存していました

(ちなみにそのままでは動きませんでした)

csvでも良いのですが、今回の場合は移行自体は後で行うので、その時にどんなデータが必要になるかいまいちわかりません

なので、取得したデータを全てをとりあえず保持しておきたいなぁと思い、octokitのオブジェクトのままデータとしてファイルに保存しました

そのため、

データをファイルに保存する github_issues_to_file.rb と、

データをファイルから読み出す github_issues_from_file.rb がありますが、

どちらも require 'octokit' な感じです

実際に移行するときは、読み出すプログラムの方に、gitlab APIを叩くような処理を書くことになるかなぁという感じです


まとめ

今回みたいなケース多いと思うので、gitlab側で1クリックで全部インポートできるようにしてくれるとありがたい限りでございます