Monday, October 3, 2016 5:00AM to 11:00AM (UTC) Schedouled down time to change site domain

Subversionリポジトリと連携できるgit-svn

 「Gitを使いたいが、中央リポジトリにはSubversionを使わざるを得ない」という場合も多いだろう。そのような状況で便利なのが、SubversionリポジトリとGitリポジトリの橋渡しをする「git-svn」である。git-svnを利用することで、SubversionリポジトリとGitのローカルリポジトリを同期させることが可能だ。本記事では、このgit-svnの活用方法を紹介する。

git-svnのアーキテクチャ

 Gitの大きな特徴として、分散型アーキテクチャがある。分散型アーキテクチャでは、コミットはローカルのリポジトリに対して行い、ソースコードの同期はそれぞれの開発者間が持つローカルリポジトリ同士で変更点をやりとりすることで行う。もちろん公開リポジトリを利用したソースコードの同期も可能であり、柔軟な開発体制を取れるのが長所である。

 しかし、一方でGitは非常に多数のコマンドがあり、CVSやSubversionといった旧来のバージョン管理システムとは異なるアーキテクチャであるため、移行が難しいという問題もある。また、Windows環境での利用についても、現状ではまだ難がある。そのため、バージョン管理システムをSubversionからGitに切り替える、というのはそう簡単ではない。そこで活用したいのが、GitリポジトリとSubversionリポジトリとの橋渡しを行う「git-svn」コマンドである。git-svnを利用すると、SubversionリポジトリからGitリポジトリにファイルをチェックアウトしたり、GitリポジトリからSubversionリポジトリにコミットを行うことができるようになる(図1)。

図1 git-svnの利用イメージ
図1 git-svnの利用イメージ