Subversion設定 · 1 min read · Jan 02, 2026

Apacheを使用したSubversionリポジトリの設定、自動更新可能な作業コピー - ページ 2

リポジトリの作成:

リポジトリを /usr/local/subversion/repository に fsfs データベースで作成したいと仮定すると、次のコマンドを実行します:

mkdir -v /usr/local/subversion/
/usr/bin/svnadmin create --fs-type fsfs /usr/local/subversion/repository

これにより、/usr/local/subversion/repository の下に Subversion リポジトリが作成されるはずです。

ls /usr/local/subversion/repository
conf/  dav/  db/  format  hooks/  locks/  README.txt

リポジトリディレクトリの下にこれらのファイルが表示されるはずです。

作成したリポジトリを提供するための httpd.conf の設定:

httpd.conf または適切な Apache 設定ファイルに次の行を追加します。



  DAV svn

  SVNPath /usr/local/subversion/repository/

Apache 設定ファイルに mod_dav モジュールが読み込まれていることを確認し、モジュールディレクトリにも存在することを確認してください。

認証の設定:

認証のために、もう一度 Apache 設定を変更する必要があります。

基本認証では、先ほど SVN リポジトリを追加した httpd.conf に次の行を追加するだけで済みます。

AuthType Basic

AuthName "{認証ポップアップタブの名前}"

AuthUserFile {パスワードファイルの場所}

Require valid-user

このように見えるはずです。



  DAV svn

  SVNPath /usr/local/subversion/repository/

  AuthType Basic

  AuthName "Subversion リポジトリ"

  AuthUserFile /usr/local/subversion/repository/conf/svn-auth-file

  Require valid-user

誰もアクセスできるようにする前に、パスワードファイルにユーザーを追加する必要があります。これは次のステップで説明します。

SVN ユーザーの追加:

Apache サーバーと Apache 基本認証メソッドを使用しているため、標準の Apache インストールに付属の htpasswd バイナリを使用してパスワードファイルを作成する必要があります。

htpasswd -cmd /usr/local/subversion/repository/conf/svn-auth-file {ユーザー名}

-c オプションは新しい htpasswd ファイルを作成します。

-m はパスワードを MD5 アルゴリズムで暗号化します。

-d はパスワードを CRYPT アルゴリズムで暗号化します。

ここで {ユーザー名} は認証に使用される実際のユーザー名を表します。

警告: 最初のユーザーを追加した後は -c オプションを使用しないでください。これを使用すると、ファイル内の既存のすべてのユーザーが作成され置き換えられます。

htpasswd -md /usr/local/subversion/repository/conf/svn-auth-file {ユーザー名}

初期リポジトリレイアウトの設定:

リポジトリには通常、3 つの標準フォルダーが含まれています。

branches
tags
trunk

これらの標準フォルダーをリポジトリに作成するには、任意の場所に一時フォルダーを作成します。/tmp が良いアイデアです。次のサブディレクトリを作成します。

mkdir -pv /tmp/subversion-layout/{branches,tags}

すべてのレイアウトフォルダーを作成した後、プロジェクトのすべての内容を trunk フォルダーに移動します。

mv -v /usr/local/apache2/htdocs /tmp/subversion-layout/trunk

次に、一時的に作成したディレクトリの初期インポートを行います。

/usr/local/subversion/bin/svn import /tmp/subversion-layout/ http://127.0.0.1/subversion/

これにより、デフォルトのリポジトリレイアウトが設定され、最初のリビジョンが作成されます。

作業コピーの設定:

最後のステップで作成した一時フォルダーは削除できます。すでにすべてのファイルがリポジトリにあるためです。

今、私たちがやるべきことは、リポジトリ内のすべてのファイルの作業コピーを /usr/local/apache2/htdocs の下に作成することです。

これにより、開発者が PHP コードを更新するたびに、作業環境でコードの変更が反映されるようになります。

しかし、作業コピーを設定するだけではこのタスクは達成できません。作業コピーで動作するフックスクリプトを作成する必要があります。

したがって、開発者がリポジトリにコミットするたびに、フックスクリプトが自動的に実行され、作業コピーが更新されます。

/usr/local/apache2/ の下の htdocs フォルダーがすでに存在しないことを確認してください。

必要であれば、htdocs_old に名前を変更できます。

作業コピーを設定するには、次のようにします。

cd /usr/local/apache2/
su – apache
/usr/local/subversion/bin/svn checkout http://127.0.0.1/subversion/trunk/ htdocs

フックスクリプトの設定:

フックは、新しいリビジョンの作成や未バージョンのプロパティの変更など、リポジトリイベントによってトリガーされるプログラムです。各フックには、そのイベントが何であるか、どのターゲットで操作しているか、イベントをトリガーしたユーザー名に関する十分な情報が渡されます。フックの出力または戻りステータスに応じて、フックプログラムはアクションを続行するか、停止するか、何らかの方法で一時停止することがあります。

フックスサブディレクトリには、デフォルトでさまざまなリポジトリフックのテンプレートが含まれています。

post-commit.tmpl          post-unlock.tmpl          pre-revprop-change.tmpl
post-lock.tmpl            pre-commit.tmpl           pre-unlock.tmpl
post-revprop-change.tmpl  pre-lock.tmpl             start-commit.tmpl

今のところ、私たちが必要としているのは post-commit フックスクリプトについてです。

post-commit.tmpl ファイルを同じフックディレクトリ内の post-commit にコピーし、post-commit に実行権限を与えます。

cp -v /usr/local/subversion/repository/hooks/post-commit.tmpl /usr/local/subversion/repository/hooks/post-commit
chmod +x /usr/local/subversion/repository/hooks/post-commit

次に、post-commit スクリプトを編集し、最後の 2 行をコメントアウトし、次の行を追加します。

#commit-email.pl "$REPOS" "$REV" [email protected]

#log-commit.py --repository "$REPOS" --revision "$REV"

/usr/bin/svn update /usr/local/apache2/htdocs/ >> /usr/local/subversion/repository/logs/post-commit.log

その後、/usr/local/subversion/ の下に logs という新しいフォルダーを作成して、ロギングを有効にし、空の post-commit.log ファイルを作成します。

mkdir -v /usr/local/subversion/repository/logs/
touch /usr/local/subversion/repository/logs/post-commit.log

再度、リポジトリフォルダーが適切なユーザー所有権を持っていることを確認する必要があります。/usr/local/subversion/repository/ の所有権をユーザー apache に設定することが推奨されます。

chown -Rv apache.apache /usr/local/subversion/repository/

すべてがうまくいけば、これで完了です。

これで、Apache サーバーを起動するとすぐに、さらなるインポートの準備が整った作業中の Subversion リポジトリサーバーができました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。