Subversion (SVN) 服務器有兩種運行模式:獨立 svnserve 與 Apache 模組 mod_dav_svn。本文詳細記錄基於 svnserve + FSFS 存儲後端的獨立服務器搭建、倉庫建立、用戶權限控制全流程。
wget https://subversion.tigris.org/downloads/subversion-1.6.13.tar.gz wget https://subversion.tigris.org/downloads/subversion-deps-1.6.13.tar.gz tar -xzvf subversion-1.6.13.tar.gz -C ../software/ tar -xzvf subversion-deps-1.6.13.tar.gz -C ../software/ cd ../software/subversion-1.6.13/ ./configure --prefix=/usr/local/subversion-1.6.13 make clean && make && make install
驗證:./svnserve --version 輸出版本資訊即成功。
mkdir -p /www/svn/repository ./svnadmin create --fs-type fsfs /www/svn/repository/ ls /www/svn/repository/ # conf db format hooks locks README.txt
選擇 FSFS 原因:BDB 格式在服務器異常中斷時易鎖死數據;FSFS 更安全、相容性更好。
mkdir -p /www/svn/tmp/{trunk,tags,branches}
cp -r nginx /www/svn/tmp/trunk/
./svn import /www/svn/tmp/ file:///www/svn/repository/ -m "first import"
導入成功顯示 Committed revision 1.
./svn list --verbose file:///www/svn/repository/ chmod 770 /www/svn/repository chmod -R g+w /www/svn/repository
[general] anon-access = read auth-access = write password-db = passwd authz-db = authz realm = repository [sasl]
[users] xuhh = xuhh@766
[groups] dev_team = xuhh, user2, user3 [/] @dev_team = rw * = r [/project/trunk] @dev_team = rw * =
注意:authz 中出現的用戶必須在 passwd 定義過;修改 authz 即時生效,無需重啟服務。
svnserve -d -r /www/svn/repository # -d 守護進程模式,-r 根目錄
客戶端檢出:svn checkout svn://server_ip/project/trunk
建立 /etc/init.d/svnserve SysV init 腳本,或加入 /etc/rc.local:
echo "svnserve -d -r /www/svn/repository" >> /etc/rc.local
svn,組 svn)。svnserve 預設)。svnadmin dump /www/svn/repository > backup.dump。獨立 svnserve 輕量、配置簡單,適合中小團隊或內網代碼託管快速落地。