Subversion(SVN)からGitへのリポジトリコンバート
「サヨナラSVN」感が強い昨今ですが、、、私たちのセクションではGitはオーセンティックなGitじゃなくて、Gitlab(Gitlab CE)をメインで使っています。
使用ツールとインストール
Gitlab CE
乱暴に言ってしまえば、Githubを自前サーバに立てる・・・と言った感じです(かなり語弊があるとは思いますが、Gitlabが主題ではないので堪忍してください)。 Rubyで動きます。
詳しい要件等は公式サイトにありますが、
# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash # yum install gitlab-ce -y
(CentOSの場合)
基本的にこれだけで、Ruby, PostgreSQL, Gitlab等の必要パッケージがインストールされます。
ユーザー管理、グループ管理、秘密鍵管理機能なんかもGUIで可能。
Rubyの非同期処理用モジュール、Sidekiqが本来の趣旨と相反してサーバのメモリを消費しまくる~といった問題点もありますが、バージョンアップの度に改善されている感じもします。
Githubの無料ユーザーだと、Privateなプロジェクトは1つしか作れませんが、GitlabCEなら当然無制限です。且つ、使い勝手も遜色ない、、、と思います。
svn2git
こちらもRubyのモジュールです。
convert -> push
の作業は、Gitlabをインストールしたサーバで行っても良いですし、別なサーバで行ってもOKです。 極論サーバでなくても、Macのターミナル操作でフツーに可能だと思います。
Rubyが既にインストールされている状態で、
# gem install svn2git
でインストール。
インストール出来たら、ユーザーディレクトリにSVNリポジトリをチェックアウトして、新しく作ったGitのリポジトリに「push」するだけ。 svn2gitコマンドで落とすときに既にGitフォーマットにコンバートされているって言うことですね。
$ mkdir tmp $ cd tmp $ svn2git http(s)://path.to/svn/repository --verbose --username {usename}:{password} $ git remote add origin http(s)://{username}@path.to/git/repository.git $ git push origin master $ -> Type password: $ ~
SVNもGitもhttp(s)でアクセスできる前提です。
SSH接続がパスワード認証OKなサーバであれば、SSHでも行けるのかもしれませんが、私たちはの内部的な「お約束」に反しますので、それは試してません。
所感
数年前に苦労して構築したSubversion(SVN)サーバは完全にお役御免となり、(時代の潮流に乗り)すっかりGit派になってしまいました~
プロジェクト毎の参加メンバーアカウント管理がとにかくラクになりました。
また、pushイベントをフックにして、WEBサーバに自動デプロイさせる~といったツールを作成し実際に運用も行っておりますが、それはまた別の機会にPostしたいと思います。