DockerでSubversionを立ち上げる
適当な作業用フォルダ(例: subversion-test)を作成し、その中に以下の docker-compose.yml を作成します。
services:
svn:
image: garethflowers/svn-server:latest
ports:
- '3690:3690' # SVN専用プロトコル通信用
volumes:
- svn_data:/var/opt/svn
restart: on-failure
volumes:
svn_data:
SVNのユーザーとパスワードを設定する
今回は例として、ユーザー名を admin、パスワードを password123 として設定します。
ターミナルを開き、docker-compose.yml があるディレクトリで以下のコマンドを実行してください。
パスワードファイル(passwd)を設定する
ユーザー名とパスワードを登録します。
docker compose exec svn sh -c "echo '[users]' > /var/opt/svn/my-app/conf/passwd"
docker compose exec svn sh -c "echo 'admin = password123' >> /var/opt/svn/my-app/conf/passwd"
アクセス権限(svnserve.conf)の設定
「パスワードファイルを使って認証する」という設定を有効にします。
また、誰でも見られないように「匿名アクセス(anon-access)」を無効化します。
docker compose exec svn sed -i 's/# anon-access = read/anon-access = none/g' /var/opt/svn/my-app/conf/svnserve.conf
docker compose exec svn sed -i 's/# auth-access = write/auth-access = write/g' /var/opt/svn/my-app/conf/svnserve.conf
docker compose exec svn sed -i 's/# password-db = passwd/password-db = passwd/g' /var/opt/svn/my-app/conf/svnserve.conf
設定を確認する。
設定が完了したら、コンテナの再起動などは不要で即座に反映されます。
以下のコマンドで、いま作成したユーザーを使ってリポジトリにアクセス(一覧表示)できるか確認します。
エラーが出ずにコマンドが終了すればOKです。
svn ls svn://localhost/my-app --username admin --password password123
(まだ何もファイルを入れていないため、空のまま戻ってきます)すれば、認証設定は成功です!
SVNへプロジェクトをインポートする
SVNのベストプラクティスである標準レイアウト(trunk, branches, tags)に従い、主開発ラインである trunk 階層にインポートします。
svn import my-app svn://localhost/my-app/trunk -m "Initial commit for my-app" --username admin --password password123
管理対象としてチェックアウトし直す
svn import を行っただけでは、現在ローカルにある my-app フォルダはSVNの管理下(作業コピー)になっていません。
今後このフォルダで編集・コミットを行えるようにするため、一度元のフォルダを退避させ、SVNからチェックアウトし直します。
svn checkout svn://localhost/my-project/trunk my-app --username admin --password password123
以上です。