SVNことSubversionですが、社内にSVN環境を構築することに必死でアカウント&パスワード登録にはせず、匿名アクセスで運用していました。
以前は使ってるのがほぼ自分だけだったのでそんなに困ることもなかったのですが、分業が少し進んで数名で使うようになると、いったい誰の更新なのか分からないのが不便になってきました。

パスワード必須、というよりはSVNのコミットに名前が出るようにしたい・・・というのが主な動機なのですが、匿名アクセスは禁止してアカウントパスワードでの接続に変更した時の記録です。

前提

・Mac El Capitan
・MacPorts でインストールしたApache + SVN構成です
・SVN 1.9.3
・Apache 2.2.31

YosemiteにアップグレードしたらApacheとSVNが動かなくなった
で苦労しながら構築した記録があるんですが、この時と同じ環境です。

Subversionでパスワードを有効にする

最終的に行ったのって、結局数行をApacheに設定する・・・というだけのものだったんですが、どうもいろんな情報がちらばっていて混乱しました。

  • 「svnserve.conf」で[general]の項目をauth-access = writeにしたりpasswor-db = passwdにする
  • その上で「passwd」ファイルを編集してユーザーとパスワードをテキスト入力する

って言うのがけっこう出てきて、これをやればいいんやなぁ~と思いやってみましたが、相変わらず匿名アクセスできるんです。
再起動かな~とか書き方が違うのかなぁとか色々やったのですが、なんとなく「svnserve.conf」がそもそも読み込まれていないような感じで、色々書き換えても無反応でした。
インストールして運用はしてるので、SVNは動いてるしコミットやらもできているので、このやり方では何か設定が足りないのかな、という感じでした。

それでさらに色々調べていってみると、Apacheの「httpd.conf」のSVNの設定が何か違うんじゃないかということになり、そっちの方法でなんとかうまくいきました。

// /opt/local/apache2/conf/httpd.conf

DAV svn
SVNParentPath /opt/local/apache2/htdocs/svn/svn_repos
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /opt/local/apache2/htdocs/svn/svn_repos/conf/passwd
Require valid-user

SVNのパスは各々の環境で読み替えてください。
私の場合「Auth~」と「Require valid-user」っていうのがそもそも記述していなかったので、追記しました。
ただ、この記述で「svnserve.conf」の設定が果たして読み込まれているのかどうかまではわかりません。
一応、設定はしましたので載せておきます。

// /opt/local/apache2/htdocs/svn/svn_repos/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd

ユーザーアカウントを作成する

これでパスワードがないとSVNにアクセスできないようになったので、ユーザーを作ります。
この時のユーザー名が、コミットした時なんかにautherに表示されるようになります。

前述のように、「passwd」ファイルを作って「user_name = pass1234」とか書くんだよっていうのを見てはいたのですが、htpasswdっていうコマンドでユーザー追加したらパスワードが暗号化された状態で保存されていたので、プレーンテキストで編集しない方がいいのかな?という気がしました。(それでできたって人もいるようなので、できるのかもしれませんが・・・)

$ cd /opt/local/apache2/htdocs/svn/svn_repos/conf/ 
$ htpasswd passwd NEW_ACOUNT_NAME

「passwd」ファイルがあるフォルダに移動して、「htpasswd 」コマンドでユーザー名を入力して実行すると、パスワードが2回聞かれるので2回入力すると、アカウントが追記されました。

ちなみに、「htpasswd -c passwd NEW_ACOUNT_NAME」って「-c」オプションをつけると、ファイルそのものが新規作成されるみたいです。
(私は-cを付けて登録し続けていたので、最後ファイルを見たら最後に追加した1名の情報しかありませんでした・・・)

Apacheを再起動する

$ sudo /opt/local/apache2/bin/apachectl start

SVNの再起動の仕方を調べ回ってたのですが、再起動するのはApacheでした。
みなさんも気を付けてください^^;

これでアカウントでアップデートやらコミットやらができるようになっていたらOKです!
今までつないでいたマシンでSVNアップデートを行おうとすると、認証パネルが出てきたので先ほど作成したアカウント情報で接続しました。

以上になります。
お疲れさまでした。