Subversionのサーバを立てた

なぜ今さらSubversion?

仕事で開発が継続している既存システムのうち、VCSがまたGitに移行せずにSubversionのまま運用されているものがあります。git-svnを使って運用することを目論んでいるので、環境や設定の調査をするためにSubversionサーバを立ててみた。

RaspberryPiにSubversionサーバーの環境を作ることにした。
参考にしたのはhttps://note.com/kazuyama4vrc/n/n567986633ffb
subversionをinstallして、/var/repos/svnをリポジトリとするよう設定する。

# subversionをインストール
$ sudo apt install subversion
# /var/repos/svnを作成し、オーナーとグループにRW権限を付与
$ sudo mkdir /var/repos/svn
$ sudo chmod 770 /var/repos/svn
# svnユーザーを作成し、svnグループにリポジトリにアクセスするユーザを追加する
$ sudo adduser --disabled-login --shell /sbin/nologin --gecos "Subversion Management User" svn
$ sudo usermod -aG svn アクセスを許可するユーザ名
# /var/repos/svnの所有者、所有グループを変更
$ sudo chown svn:svn /var/repos/svn
# /var/repos/svnにsubversionリポジトリを作成する
$ sudo --user=svn svnadmin create /var/repos/svn
# (一応実施)/var/repos/svn/dbにSGIDを設定
$ sudo chmod g+s /var/repos/svn/db

# /etc/tmpfiles.d/svnserve.conf を編集する。内容は
d /run/svnserve 0755 svn svn

# /etc/systemd/system/svnserve.service を編集する。内容は
[Unit]
Description=Subversion Server
After=syslog.socket network.target
Documentation=man:svnserve(8)

[Service]
Type=forking
PIDFile=/run/svnserve/svnserve.pid
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid --daemon --root=/var/repos/svn
ExecStop=/bin/kill ${MAINPID}
PrivateTmp=yes
User=svn
Group=svn

[Install]
WantedBy=multi-user.target

$ sudo systemctl daemon-reload

# ここで一旦テスト
$ sudo mkdir --mode 755 /run/svnserve
$ sudo chown svn:svn /run/svnserve
$ sudo systemctl start svnserve.service
$ sudo systemctl status svnserve.service
でエラーがないことを確認する。
$ svn info svn://localhost/
	パス: .
	URL: svn://localhost
	Relative URL: ^/
	リポジトリのルート: svn://localhost
	リポジトリ UUID: a85cfb70-c5b1-4923-a6ee-ce2446ab90cf
	リビジョン: 0
	ノード種別: ディレクトリ
	最終変更リビジョン: 0
	最終変更日時: 2024-09-14 18:26:15 +0900 (2024年09月14日 (土))

$ sudo systemctl enable svnserve.service
再起動したあとで再度ログインしsvn infoで確認