svnのリポジトリを全部gitに移行する

svnのリポジトリをgitで扱う方法として
svn gitというコマンドツールがある

今回はgitをリモートリポジトリにする方法は別途解説するとして

このコマンドを使用して、svnリポジトリをgitに移行してみます。

まずは、gitリポジトリをイニシャライズします。

イニシャライズ時に、リモートリポジトリにする前提で移行するので–bareオプションを付けます。
これは、my_prodディレクトリにソースを展開せずに管理情報だけを保持するリポジトリにするオプションです。
[shell]git init –bare my_prod[/shell]

svnへの参照情報をconfigファイルに設定します。

[shell]cd .git
vi config[/shell]
以下の内容を追記
[text][svn-remote "svn"]
url = http://localhost/svn/my_prod
fetch = trunk:refs/heads/master
branches = branches/*:refs/heads/*
tags = tags/*:refs/tags/*[/text]

  • urlというのは、SVNリポジトリのベースになるURLですが、個々のリポジトリ名まで含んで問題ないみたい。
    このURIに/trunkとか/branchesとかをくっつけられる状態であればいいようです。
  • fetchというのは、マスターを指定する部分です。
    が、マルチマスター構成も可能で、ここは複数行書くことが出来ます。
    その際は、refs/heads/sub-musterとかをフェッチ先に指定する様にします。
  • branchesは、ブランチ配下を取り込むという指定です。
    ここの書き方としては「*」をかならず含まなければいけないようです。
    で、ブランチ名によるフィルタリングをして取り込みたいブランチだけを指定することも可能。
    branches/release_*:refs/head/branches/release_*
    という感じに。
  • tagsも同様です。

svnからリポジトリを取得

[shell]git svn fetch[/shell]
これで、http://localhost/svn/my_prodにあるtrunk、branches以下のすべて、tags以下のすべての情報がgitに取り込まれます。

このgitリポジトリをサーバとして公開すれば、svnからgitへの移行が完了となります。

Ubuntu 10.04にSubversionサーバを入れる

設定内容

  • 9000番ポートでsvnリポジトリを公開
  • svnリポジトリのデータは/var/svn_dataに保存
  • リポジトリ名はrepoで公開

まずはSubversionのサーバモジュールをインストール

[shell]sudo apt-get install subversion libapache2-svn[/shell]

/etc/apache2/sites-availableに移動

[shell]cd /etc/apache2/sites-available[/shell]

subversion という名前でファイルを作成

中身を

 

[text]
<VirtualHost *:9000>
ServerAdmin webmaster@localhost

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/svn_data>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

<Location />
DAV svn
SVNParentPath /var/svn_data
</Location>

ErrorLog /var/log/apache2/subversion-error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/subversion-access.log combined
</VirtualHost>[/text]

とする

subversionをenableする

[text]sudo a2ensite subversion[/text]

/etc/apache2に移動

[text]cd /etc/apache2[/text]

ports.conf ファイルを開いて、9000番ポートをリッスンするように設定(以下を追加)

[text]Listen 9000[/text]

svnリポジトリのデータディレクトリを作成

[text]cd /var
sudo mkdir svn_data[/text]

svnリポジトリの作成

[text]cd /var/svn_data
svnadmin create –fs-type bdb repo[/text]

リポジトリの所有者をapacheの実行ユーザと同じ物に変える

[text]sudo chown -R www-data:www-data svn_data[/text]

apacheの再起動

[text]sudo apache2ctl restart[/text]

リポジトリの接続確認

http://localhost:9000/repo