subversionでソース管理その3

やらなくてもいいのに「svn」ユーザを作ってしまったので、管理ユーザ「xxx」とリモートユーザ「svn」のマルチユーザで「subversion」を使うことになりました。そのため、作成されるファイルのPermissionの管理が必要になってきます。(いずれはやらないといけないことですが今ですか?)

ユーザとグループ

管理ユーザ「xxx」を「svn」グループに所属させておきます。「/etc/group」と「/etc/gshadow」の両方の「svn:??」のところに「xxx」を追加します。詳しくは、ここ(→ユーザをグループに追加 - satake7’s memo)に書いてあります。追加したら一度ログアウトすること。ここ、はまります。

subversionコマンドのラップ

グループでの書き込みができるように、コマンド実行時に「umask」を「002」にします。

~$ which svn ← svnがどこにあるか調べる
/usr/bin/svn
~$ cd /usr/bin
/usr/bin$ sudo mv svn svn-real ← リネーム
/usr/bin$ e svn

#!/bin/sh
umask 002
/usr/bin/svn-real "$@"
/usr/bin$ sudo mv svnserve svnserve-real ← svnserveも同様に
/usr/bin$ e svnserve

#!/bin/sh
umask 002
/usr/bin/svnserve-real "$@"
/usr/bin$ sudo mv svnadmin svnadmin-real ← svnadminも同様に
/usr/bin$ e svnadmin

#!/bin/sh
umask 002
/usr/bin/svnadmin-real "$@"

リポジトリの権限変更

いいか悪いかわかりませんが、subversionリポジトリを「/home/svn」配下に置く構成にしているので、このディレクトリに、suidビットをたてます。

/usr/bin$ cd /home
/home$ la
drwxr-xr-x  6 svn     svn     4096 2008-04-29 03:39 svn

/home$ sudo chmod g+s /home/svn
/home$ la
drwxr-sr-x  6 svn     svn     4096 2008-04-29 03:39 svn

subversionの動作確認

svn」ユーザでログインして「hogeリポジトリを作成します。

/home$ su svn        ← svnでログイン
svn:/home$ cd ~
svn:~$ svnadmin create hoge ← リポジトリ作成
svn:~$ la
drwxrwsr-x  7 svn  svn  4096 2008-04-29 05:37 hoge
svn:~$ exit
exit

管理ユーザで作業ディレクトリを作成して、それをリポジトリにインポートしてみます。

/home$ cd ~
~$ mkdir test
~$ cd test
~/test$ mkdir trunk tags branches   ← お決まりのディレクトリ
~/test$ echo "test" > trunk/test.txt ← テストファイル作成
~/test$ svn import file:///home/svn/hoge -m "initial" ← インポート
Adding         trunk
Adding         trunk/test.txt
Adding         branches
Adding         tags

Committed revision 1.
~/test$

うまくいってるようです。

TortoiseSVNで確認

Windowsからネットワーク越しに確認してみます。エクスプローラの右クリックで、[TortoiseSVN] → [リポジトリブラウザ]とします。
URL入力ダイアログが開きますので「svn+ssh://svnUbuntu710/home/svn/hoge」と入力します。

こういう画面が出てくればOKです。うまくいってるようです。

参考

  1. subversionをグループで使う方法については、こちら(→http://www.aglabo.com/agl/proevo/Linux/Subversion/install/subversion.html)が大変参考になりました。感謝です。
  2. ユーザ管理については、こちら(→http://park15.wakwak.com/~unixlife/linux/de-user.html)とか、こちら(→Linux 基礎知識)にお世話になりました。
  3. subversion全般については、こちら(→http://a01.biz/wiki/index.php?subversion)を参考にさせていただきました。ありがとうございました。