手動建立 SVN 倉庫步驟繁瑣 (svnadmin create、編輯 svnserve.conf/passwd/authz)。本文提供一鍵自動化腳本:互動輸入倉庫名稱 → 建立倉庫 → 自動配置 svnserve.conf (關閉匿名、啟用密碼檔、授權檔) → 初始化 authz (開發群組讀寫權限) → 完成提示。

create_svn_repo.sh#!/bin/bash
# 自動建立 SVN 倉庫並配置基本權限
# 執行需 root 權限
read -p "Enter SVN repository name: " svn_name
REPO_ROOT="/svnroot"
REPO_PATH="${REPO_ROOT}/${svn_name}"
# 1. 建立倉庫
/usr/bin/svnadmin create "${REPO_PATH}"
if [ $? -ne 0 ]; then
echo "Error: svnadmin create failed"
exit 1
fi
# 2. 配置 svnserve.conf
CONF="${REPO_PATH}/conf/svnserve.conf"
sed -i 's/# anon-access = read/anon-access = none/' "${CONF}"
sed -i 's/# auth-access = write/auth-access = write/' "${CONF}"
sed -i 's|# password-db = passwd|password-db = /svnroot/conf/passwd|' "${CONF}"
sed -i 's/# authz-db = authz/authz-db = authz/' "${CONF}"
# 3. 初始化 authz (統一授權檔)
cat > "${REPO_PATH}/conf/authz" <
chmod +x create_svn_repo.sh
./create_svn_repo.sh
# 輸入名稱如: project_alpha
# 完成後啟動 svnserve
svnserve -d -r /svnroot
# 客戶端存取: svn checkout svn://server/project_alpha
./script.sh repo_name 非互動模式[/project_alpha] 路徑授權saslauthd 或 Apache mod_dav_svn + mod_authz_svnsvnadmin dump 定時熱備份 + 增量備份