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 (◯)