なぜ今さら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で確認