Freelance Web Engineer

Subversionリポジトリをgitリポジトリに移行

2011-03-21  git, subversion

本格的にgitに乗り換えようと思い、既存のsubversionリポジトリをgit化しました。

今回の環境は以下:

ローカルマシン
Ubuntu 10.04 LTS on Mac OS X via VirtualBox
サーバマシン
Ubuntu 10.04 LTS on さくらVPS(512)
git
1.7.0.4 (ローカル/サーバ共通)

1. subversionリポジトリをgitリポジトリに変換する

ローカルマシンでの作業です。Subversionリポジトリはssh接続になっています。

$ sudo aptitude install git-svn
$ git svn clone svn+ssh://[user_name]@[domain]/[path_to_trunk] [local_directory_name]

※[ ]部分は適切に置き換えてください。localdirectoryname は分かりやすくプロジェクト名などがいいですね。

コミットログが引き継がれているか確認してみます。

$ cd [local_directory_name]
$ git log
^[[33mcommit 6528b2470ba329792ad935ff816043f09d1a4d60^[[m
Author: masayuki <masayuki@67c6d202-483b-4439-8c37-3cb83663873e>
Date:   Sun Mar 6 03:36:57 2011 +0000

    unicorn???????

    git-svn-id: svn+ssh://****/****/trunk@102 67c6d202-483b-4439-8c37-3cb83663873e

^[[33mcommit 867c71ad1546e03f79e625ffe64c53b505bb21b6^[[m
Author: masayuki <masayuki@67c6d202-483b-4439-8c37-3cb83663873e>
Date:   Sun Mar 6 03:26:55 2011 +0000

    unicorn???????

    git-svn-id: svn+ssh://****/****/trunk@101 67c6d202-483b-4439-8c37-3cb83663873e

^[[33mcommit 49c261ff264474eb817587bcf0a5aed63be6235d^[[m
Author: masayuki <masayuki@67c6d202-483b-4439-8c37-3cb83663873e>
Date:   Sat Mar 5 08:54:02 2011 +0000

    rename unicorn conf filename

きちんと引き継がれているようですが、文字化けしています。git のページャを lv にしましょう。

$ sudo aptitude install lv
$ vi ~/.gitconfig

[core] 部分に以下を追加しましょう。

pager = lv -Ou8 -c

これでもう一度 git log したところ、文字化けは解消しました。

2. gitリポジトリをリモートリポジトリ用に再度cloneする

1.で作成したディレクトリを再度cloneします。その際、–bare オプションを付けることで共有リポジトリに適したファイル構成でcloneします。具体的には、ソースコードなどは含まず、.gitディレクトリの中身だけが含まれているようです。

$ git clone --bare [1.で作成したディレクトリ] hoge.git

3. .gitディレクトリをサーバーにscp

ローカルマシンにて、

$ scp -i [秘密鍵] hoge.git [user]@[domain]:~/

サーバーマシンにて、.gitディレクトリを適切な場所に配置します。今回は /var/local/projects/gitrepo/以下としました。

$ sudo mkdir -p /var/local/projects/gitrepo
$ sudo chown -R masayuki:masayuki /var/local/projects/gitrepo/
$ cd /var/local/projects/gitrepo/
$ mv /home/masayuki/hoge.git .

4. git clone してみる

ローカルマシンにて、

$ git clone ssh://[user]@[domain]/var/local/projects/gitrepo/hoge.gitInitialized empty Git repository in /home/masayuki/tmp/hoge/.git/
remote: Counting objects: 1595, done.
remote: Compressing objects: 100% (1464/1464), done.
remote: Total 1595 (delta 902), reused 0 (delta 0)
Receiving objects: 100% (1595/1595), 531.80 KiB, done.
Resolving deltas: 100% (902/902), done.

できました!

comments powered by Disqus