»Subversionはてなブックマークに追加はてなブックマークを見る

バージョン管理システムSubversionのインストール

»インストール

# インストールされているか確認
rpm -qi subversion

# インストール
yum install subversion

»xinetd経由でsvnserveを起動する場合の設定

xinetd経由でsvnserveデーモンを起動させるための設定方法。 ここではローカルネットワーク内からのアクセスのみを許可する条件で設定を行う。

まずsvnserve用のユーザを作成する。

useradd svn

次に、リポジトリを格納するためのディレクトリを作る。

mkdir /var/repos
chown svn:svn /var/repos

xinetdの設定をするために、/etc/xinetd.d配下にsvnserveというファイルを作成し、下記のような内容を書き込む。

service svnserve
{
        disable         = no
        socket_type     = stream
        wait            = no
        user            = svn
        server          = /usr/bin/svnserve 
        server_args     = -i -r /var/repos
        log_on_failure  += USERID
        only_from       = 192.168.0.0/24 127.0.0.1
}

設定項目の意味は次の通り。

user
svnserveを実行するユーザ。
server
svnserveへのフルパス。
server_args
svnserveに渡す引数。 「-r /var/repos」でリポジトリのルートディレクトリを/var/reposに設定している。
log_on_failure
接続に失敗した場合、ユーザ名をログに記録する。

/etc/hosts.allowに下記の内容を追記し、内部ネットワークからの接続のみを許可する。

svnserve : 192.168.0. 127.0.0.1

/etc/servicesを編集して、サービス名と使用ポート番号を追記する。 追加する位置は任意だが、「Unregistered but useful/necessary other services」のあたりに追加しておくとよい。

#
# Unregistered but useful/necessary other services
# 
               :
               :
            (中略)
svnserve             3690/tcp                        # Subversion
svnserve             3690/udp                        # Subversion
               :
               :

既に/etc/servicesに次のような記述があった場合は、svnをsvnserveに書き換えること。

               :
               :
svn             3690/tcp                        # Subversion
svn             3690/udp                        # Subversion
               :
               :

また、iptablesなどを使ってファイヤーウォールの設定がされている場合は、3690番のポートを忘れずに空けること。

続いて、chkconfigコマンドを使ってsvnserveを起動できるようにする。

# svnserveを起動するようにする
chkconfig --add svnserve 

# 設定が反映されているか確認する
chkconfig --list svnserve

上記のコマンドを打ったあと、次のように表示されればOK。

svnserve:       on

起動設定が整ったところで、xinetdを再起動する。

service xinetd restart

telnetを使ってsvnserveに接続して次のように表示されればOK。

# telnet localhost 3690
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
( success ( 1 2 ( ANONYMOUS ) ( edit-pipeline ) ) ) 

»リポジトリの作成・設定

まずはリポジトリを作る。 ここではsampleというリポジトリを/var/reposに作成する。

# svnになる
su svn

# svnadminコマンドを使って
svnadmin create /var/repos/sample

続いて、リポジトリのアクセス設定を行う。 リポジトリを作成すると自動的にconfディレクトリが作成される。 その中にsvnserve.confとpasswdの二つの設定ファイルを作成する。

svnserve.confではアクセス設定などを行い、passwdではパスワードを設定することができる。 まずはsvnserve.confの設定例。

[general]
anon-access = none          # Anonymous(匿名)ユーザのアクセスを許可しない
auth-access = write         # 認証済みユーザには書き込み権限を与える
password-db = passwd        # パスワードファイルをpasswdとする
realm = sample repository   # リポジトリの説明(適当でOK)

anon-access、auth-accessに設定できる値は次の三つ。

none
アクセスを許可しない
read
読み込み権限を与える
write
読み込み、書き込みの両方の権限を与える

つづいて、passwdの設定例。 「ユーザ名=パスワード」の形式で記述する。

[users]
santamarta=password
hoge=hogehoge

passwdファイルの編集が終わったら、アクセス権限をsvnだけに設定して、他のユーザからアクセスできないようにする。

cd /var/repos/sample/conf
chmod 600 passwd
chown svn:svn passwd

Sponsored Link

»TortoiseSVNはてなブックマークに追加はてなブックマークを見る

TortoiseSVNの使い方。

»TortoiseSVNで自動的に属性を着けるには

TortoiseSVNの設定ファイルを編集することで、ファイルをリポジトリに追加する時点で自動的に属性を付与させることができる。 これにより「$Date: 2008-03-31 20:56:09 +0900 (月, 31 3月 2008) $」などが自動的に日付に展開されるようになる。 また、拡張子からMIMEタイプを判断させるようにすることも出来る。 以下はその設定方法。

まずエクスプローラ上で右クリックし、メニューからTortoiseSVN→Settingsの順に選択。 続いて出現する画面からGeneralを選択し、「Subversion configuration file」の横にあるEditボタン(赤い矢印の部分)をクリックする。

Subversion configuration file

テキストエディタが開いて設定ファイルの内容が表示されるので、次の内容を書き込む。

[miscellany]
enable-auto-props = yes # 自動的に属性をつけるようにする

[auto-props]
*.cpp = svn:keywords=Id Date Rev Author # 拡張子が.cppの場合は、コミット時に
                                        # Id, Date, Rev, Authorの各キーワードを展開する
*.h   = svn:keywords=Id Date Rev Author
*.png = svn:mime-type=image/png         # 拡張子が.pngの場合は、MIMEタイプをimage/pngに設定する
*.jpg = svn:mime-type=image/jpeg
*.bmp = svn:mime-type=image/bmp
*.psd = svn:mime-type=image/x-photoshop
*.ico = svn:mime-type=image/x-icon

この設定をした上で、たとえばファイル中に「$Id: index.xhtml 13 2008-03-31 11:56:09Z santamarta $」と書いておくと次のように展開されるようになる。

$Id: index.xhtml 13 2008-03-31 11:56:09Z santamarta $

$Idのあとに続けて、順に「ファイル名、リビジョン番号、最終変更日時、最後に変更を行ったユーザ」の各値が展開される。

Sponsored Link