UbuntuにSubversionを入れてバージョン管理でもしてみる

Perlを好き勝手書いていると、ファイルがスパゲッティになってしまう可能性が高いので、 バージョン管理を導入したくなってきたので、自宅サーバにSubversionをインストール。

まずはインストールとちょっとした設定

$ sudo apt-get install subversion subversion-tool libapache2-svn

http経由でレポジトリを見れる様に、Apacheの設定をいじる。 ファイルは/etc/apache2/mods-enabled/dav_svn.confで、コメントアウト外すのめんどいので 一番最後に以下を追加。

<location /svn>
  DAV svn
  SVNParentPath "/home/username/svn"
</location>

これで、「http://hogehoge/svn/test」とアクセスしたときに、/home/username/svn/testに あるファイルにアクセスされる様です。レポジトリ保存用のフォルダは自分で作っておきましょう。

$ mkdir ~/svn/

ローカルでバージョン管理を体験

ではまずローカルでバージョン管理なるものを触ってみよう。

$ svnadmin create ~/svn/test

でtestというフォルダが作られ、その中に色々自動生成される。これはひとまず置いといて、 適当な場所に作業用の一時的なフォルダを作ってちょっといじってみる。

$ mkdir ~/work
$ mkdir ~/work/source
$ echo "Hello World" > ~/work/source/test.txt

こんな感じでとりあえずおおもとのソースを作る。sourceの中をバージョン管理したければ 以下の様にしてレポジトリにインポートする。

$ svn import ~/work/test_import file:///home/username/svn/test/ -m "initial import"
Adding         /home/username/work/source/test.txt
Committed revision 1.
$ rm -fr ~/work/source

これやったら、もうこのフォルダは削除してよい。ではレポジトリからファイルを 取り出し(チェックアウトし)てみる。

$ mkdir ~/work/checkout
$ svn checkout file:///home/username/svn/test ~/work/checkout
A    /home/username/work/test/test.txt
Checked out revision 1.

これで、レポジトリと同期した状況を~/work/checkoutに作ることができた。ちなみに 隠しフォルダで.svnが作られている。バージョン管理を実感するために、test.txtを変更して 差分を見てみる。

$ echo "Goodby World" > ~/work/checkout/test.txt
$ svn diff
Index: test.txt
===================================================================
--- test.txt    (revision 1)
+++ test.txt    (working copy)
@@ -1 +1 @@
-Hello World
+Goodby World

この更新をレポジトリに反映させるにはcommitする。

$ svn add ~/work/checkout/test.txt
$ svn commit -m "Change test.txt"
Sending        test.txt
Transmitting file data .
Committed revision 2.

まぁこんな感じ。新しいファイルを追加するときは

$ svn add ~/work/checkout/hoge.txt
$ svn commit -m "Add hoge.txt"

インターネット経由でバージョン管理

実は大して変わらない。クライアントがコマンドラインなら、多分上の「file:///home/username/svn/test」 という部分を「http://hogehoge/svn/test」に変えればよい。但し、この場合Apache経由でファイルや ディレクトリを操作するので、パーミッションや所有者を変更しておく必要がある。Ubuntuの場合 Apacheはwww-dataなるユーザが動かすので以下の様に変更。

$ sudo chown -R www-data.www-data ~/svn/test

ちなみに、ブラウザから「http://hogehoge/svn/test」と叩いても見れる。すばらしい。

WindowsからはGUIで操作できるTortiseSVNというソフトをインストールするといいっぽい。 詳しくは参考サイトで。

参考サイト

xsharing 10-04-15 (木) 12:59

svn-toolsでは?

shige 11-02-15 (火) 23:19

バージョン差異かもしれませんが、

sudo apt-get install subversion subversion-tool libapache2-svn (×)
sudo apt-get install subversion subversion-tools libapache2-svn (◯)