4コマでわかるSVNからgitへの移行

感想おまちしてます!

Git-Logo-2Color

SVNからgitに移行してみようかなーと思ってネットで見つけた手順をやってみたのだけれど、自分の知識レベルではそれぞれのコマンドが何を意味しているか理解するのに時間がかかったので、この苦しみをあとで理解できるように簡単にまとめてみた。

前準備

gitとgit-svnのインストールを済ませておくこと。

適度なSVNリポジトリがなかったので、昔使っていたGoogle CodeのSVN(http://daipresents.googlecode.com/svn)を変換している。

1コマ目:SVNからGitに変換する

2012_11_12_15_36

SVNからgitに変換する。変換したgitリポジトリをsvn2gitとかいう名前にしている。途中でコケた時にリジュームできるようにfetchを使って変換する。

2コマ目:整理するgitリポジトリを用意する

2012_11_12_15_36 (1)

SVNの構造をgitの構造にマッチさせる必要がある。これは、SVNから変換したリポジトリ(svn2git)を使わず、整理用gitリポジトリ(googlecode)に整理していく。僕の場合、リモートといいながら同じディスクにgitあるやん!という部分で混乱してしまった。

まず、整理用gitリポジトリを作成し初期化。

3コマ目:リポジトリを整理する

2012_11_12_15_37

SVNから変換したリポジトリ(svn2git)に移動して、整理用リポジトリ(googlecode)に整理していく。

まず、originにgitリポジトリを割り当てる。

local-trunkを作成してそこにSVNのtrunkを指すようにする。

local-trunkを整理用リポジトリのmasterとして移行。

一回、ブランチとリモートブランチを確認しておく。

ブランチは「python-test-branch」のように確認できた。タグは「tags/redmine_all_time_team-0.2.0」のようになっているので、それぞれを整理用リポジトリに移行していく。まずはブランチの移行。

これをブランチの数だけ繰り返す。

以下のコマンドでリモートにブランチが追加されているのがわかる。

次にタグの移行。

こちらもタグの数だけ繰り返す。

git tag」コマンドでタグを確認できる。

4コマ目:整理されたリポジトリをリモートにアップロードする

2012_11_12_15_38

最後に、整理されたgitリポジトリをリモート(Githubとか)にアップロードする。

一度、整理されたリポジトリに移動して、ブランチとタグの様子を見てみよう。

今回はテストのため一部ブランチとタグのみ移行した。

確認できたらリモートにアップロードする。

まとめ

もしかしたら「もっと簡単にできるよ!」とかあるかもしれないので、リブログされたら修正しようかと思う。

参考にさせていただいたのは、会社名が素敵すぎるメッサリバティさんのsvn の repository を git の repository に変換する方法 | messaliberty – 株式会社メッサリバティと、説明がとても秀逸なDQNEO起業日記さんの仕事で使ってる巨大SVNレポジトリをGithubに移管するためにやったことまとめです。

すごく勉強になりました。ありがとうございます。