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