読者です 読者をやめる 読者になる 読者になる

CentOS6.3でSVNサーバを構築

subversionがインストールされていない場合はインストールする。

# yum install subversion

SVN用ユーザ追加。そして作成ファイルがグループwrite権がつくようにumaskを設定、
既存のファイルの権限もrootが所有者、グループがsvnusersになるように修正。

# groupadd -g 400 svnusers
# useradd svn -u 400 -g svnusers -s /bin/bash
# vi /home/svn/.bashrc
umask 002 #追加
# chown -R root:svnusers /home/svn
# chmod -R g+w /home/svn

ここから、実際にリポジトリを作ってファイル・ディレクトリを作ってテストしてみる。

# su - svn
$ mkdir /home/svn/repos
$ svnadmin create /home/svn/repos/test
$ svn mkdir file:///home/svn/repos/test/trunk -m "create"

リビジョン 1 をコミットしました。
# svn mkdir file:///home/svn/repos/test/branches -m "create" 

リビジョン 2 をコミットしました。
# svn mkdir file:///home/svn/repos/test/tags -m "create"
リビジョン 3 をコミットしました。

サーバ上の接続ユーザIDでチェックアウトしてみる。カレントディレクトリにtestフォルダが出来上がるのがわかる。

$ svn co file:///home/svn/repos/test
A    test/trunk
A    test/branches
A    test/tags
リビジョン 3 をチェックアウトしました。
$ ls -alF test
合計 24
drwxrwxr-x   6 foo bar 4096  310 16:02 2013 ./
drwx------. 32 foo bar 4096  310 16:02 2013 ../
drwxrwxr-x   6 foo bar 4096  310 16:02 2013 .svn/
drwxrwxr-x   3 foo bar 4096  310 16:02 2013 branches/
drwxrwxr-x   3 foo bar 4096  310 16:02 2013 tags/
drwxrwxr-x   3 foo bar 4096  310 16:02 2013 trunk/

ローカル側での確認は終了。

別クライアントからの接続

別クライアントからssh経由で接続するために、該当する接続ユーザIDにてhttp://d.hatena.ne.jp/kazuokohchi/20060823の記事をもとに秘密鍵と公開鍵を生成し、公開鍵から~/.ssh/authorized_keys2を作っておく。
サーバ側の接続ユーザIDがsvnusersのグループに所属するように以下のコマンドを実行する。

# usermod -G svnusers 接続ユーザID

しかし、これではまだだめなようで、rep-cache.dbにgroup書き込み権を与えてあげる必要がある。

# su - svn
$ cd /home/sv/repos/test/db
$ chmod 664 rep-cache.db

#dbディレクトリのグループにSビットが立っているのにどうしてこれをしなければいけないのかわからない。
また、SELinuxも確認。(getenforceでDisabledになっていれば問題ない)。

以下、eclipseを動作させるPCの作業。

  1. 作成しておいた秘密鍵をコピペしてPC側のファイルとして保存。
  2. パースペクティブを開く」で「SVNリポジトリエクスプローラー」を開く。
  3. 右クリックから新規、「リポジトリロケーション」を選択。
  4. URLに、 svn+ssh://接続ユーザID@ドメイン(IPアドレス)/home/svn/repos/test を入力。
  5. SSH設定」タブにて「秘密鍵」を選択してファイルに保存しておいた秘密鍵を選択。
  6. パスフレーズはなしで生成している場合はいらない。


これで接続ができる。通常のパースペクティブから新規プロジェクト作成でSVNを選択すればよいみたい。なんらかの原因でチェックアウトしたファイルが「読み取り専用」となる場合があるが、その場合はプロジェクトを削除してサイド取り込んでみたらうまくいった。これもよくわからない。

なお、コミットはファイルまたはディレクトリまたはプロジェクトを右クリックして「チーム」の「コミット」を選択する。

参照は以下。

http://lucky837.blog59.fc2.com/blog-entry-95.html
http://d.hatena.ne.jp/bohnen/20060324/1143171050
http://www.ibm.com/developerworks/jp/opensource/library/os-ecl-subversion/