タグ別アーカイブ: GitHub

GoogleCodeからGitHubへの移行

| コメントをどうぞ

これからはソーシャルコーディングの時代です(キリッ

冷やし中華は終わりを迎える時節ですが、ソーシャルコーディングをはじめました。
ソーシャルコーディングと言えばGitHubなのですが、既存資産をGoogleCodeなどで管理していた場合、なかなか移行の手間とか覚えなければならないことが増えたりとかで二の足を踏んでしまいますよね?
ですが、ここは思い切ってやってしまおうと言うのが今回の趣旨です。
今回はGooleCodeからGitHubに移行する手順をテーマにしたいと思います。
 
 

検証環境

OS: Mac OSX 10.8.2 Moutain Lion
Java: JDK1.6.0_33 64bit
Git: 1.7.10.2
 
 

リポジトリの移行

GitHubはその名の通りGitリポジトリですが、GoogleCodeはSubversion、Mercurial、GitといくつかのSCMの中から選択することができます。
今回は中央管理型SCMから分散型SCMへの移行、SubversionからGitへの移行に焦点を当てたいと思います。
SubversionとGitでは、若干その管理スタイルが異なります。
ですので、Git-SVNと言ったツールが必要となります。
Git-SVNは、Gitをインストールする際に、+svnオプションを付けることでGitと同時にインストールできると思います。
 

1. authour.txtの作成

authors.txtによってGoogleCodeアカウントとGitHubアカウントを紐づけます。
この紐付けがうまくいっていないとエラーになってしまいます。

// authors.txt
hogeta hogeo = hogeta hogeo <hogeo@gmail.com>
(no author) = hogeta hogeo <hogeo@gmail.com>

左辺がGoogleCodeのアカウント名、右辺がGitHubアカウントになります。
(no author)はGoogleCodeが勝手に作成するものですので、これの紐付けも必要になります。
移行するにはGitHubのアカウントが必要になるのがネックです。
チームで利用していた場合、チームを抜けた人などにもお願いする必要があります。
 

2. GitHubにリポジトリを作成

移行するための箱を用意する必要があります。
GitHubのWeb画面からリポジトリを作成します。
 

3. Git−SVNで変換

git svn clone -s -A ./authors.txt <GoogleCodeのチェックアウトURL> repo
cd repo/
git remote add origin git@github.com:<GitHubアカウント名>/<GitHubリポジトリ名>
git push origin master

ローカルにソースコードをチェックアウトするときにGit-SVNで変換を行っています。
この時、repoディレクトリにチェックアウトしたコードが格納されます。
authours.txtの紐付けができていない場合、チェックアウト時にエラーを吐きますので、GitHubに作成したリポジトリの箱はまだ汚れません。
 

4. ブランチとタグを切る

GitHubにプッシュしただけでは、既存のブランチ情報やタグなどはGitHubには反映されていません。
ですので、ブランチなどをここで用意しましょう。

// ブランチの作成
git branch -r
git branch <新しく作るブランチ名> <-rで確認したブランチ名> 
git push origin <ブランチ名>

// タグの作成
git branch -r
git checkout <タグ名>
git tag  <タグ名>
git push --tags origin

ブランチの切り方は若干ややこしいかと思います。
引数として が正確です。
タグもブランチと同じ方式で切れるのですが、私の環境では上記方法でも問題ありませんでした。
 
 

チケットの移行

GitHubは、Issue Trackerも備えています。
若干というかかなり使いにくいのですが、折角なのでGoogleCodeで管理していたチケットも移行してしまいます。
ですが、ここで問題があります。
チケットを移行する仕組みがAPIしかありません。
また、GitHub API V2.0に対応しているツールはたくさんあったのですが、現在はGitHub API V3.0&OAuth2です。
仕方ないので、node.jsを使ってサクッと作りました。
GoogleCode Issue Import

使い方はリンク先を見ていただくとして、これでリポジトリとチケットの移行ができました。
結構簡単にできるものです。
これを機に、皆様もソーシャルコーディングはじめてみませんか?
 
 

参考URL

GitHub
Do Ruby! 「SourceForge.JPのプロジェクトをSubversionからGitへ移行する」
infoScoop(GitHub)