在Ubuntu上使用Subversion
安装
假设已经安装了Apache。请执行以下命令apt-get:
sudo apt-get install subversion libapache2-svn apache2-utils
由于Ubuntu 14.04LTS操作系统中没有预装htdigest,所以需要安装apache2-utils。
使HTTP使能夠進行訪問
vi /etc/apache2/mods-enabled/dav_svn.conf
<Location />
DAV svn
SVNParentPath /var/lib/svn
AuthType Digest
AuthName "realm"
AuthUserFile /etc/apache2/.htdigest
Require valid-user
</Location>
如果按照以上的设置示例,在访问(apache的根路径)/svn/(SVN仓库名称)时,将能够访问到/var/lib/svn/(SVN仓库名称)的仓库。例如,如果Apache的根路径是http://localhost/,那么当访问http://localhost/svn/Test时,将能够看到名为/var/lib/svn/Test的仓库。
只需刪除 dav_svn.conf 的註解,即可立即使用。在上述情況下,除非通過摘要認證,否則無法訪問 SVN 儲存庫。然後,必須創建用於摘要認證的密碼檔案。以下指令即可:
# Digest 创建验证密码。
sudo htdigest -c /etc/apache2/.htdigest 'realm' (用户名)
当您登录时,系统会要求输入密码,请确保密码设置正确。请确认密码文件名与您在 dav_svn.conf 中指定的文件名是否匹配。另外,实际上,认证将不会成功,除非您确保上述领域(认证域:可以是任意字符串)也匹配。此外,请注意错误信息可能不够明确。
如果你想添加用户,只需要运行相应的 sudo htdigest 命令。记住在使用 -c 选项时会创建一个新文件(旧用户将会被删除),请注意。
现在,通过Web准备好了访问,我们可以按照以下方式启用Digest身份验证并重新启动Apache。
sudo a2enmod auth_digest
sudo /etc/init.d/apache2 restart
确认动作
下一步终于要创建 SVN 的存储库文件夹并创建存储库。 例如,如果想要创建名为 Test 的项目,则只需创建名为 Test 的存储库,可以按照以下步骤进行:
sudo mkdir /var/lib/svn
cd /var/lib/svn
sudo svnadmin create Test
sudo chown -R www-data.www-data /var/lib/svn # www-data 是 Ubuntu 上的 Apache 用户
执行ls命令,确认Test文件夹已创建并能在其中进行各种操作。
然后最后通过访问 http://localhost/Test 来进行确认。系统会要求输入用户名和密码,正确回答后,应该会显示一个版本号为0的空仓库,内容为「Revision:0」。如果不成功的话,可以参考/var/log/apache2/access.log或error.log来查找原因。
如果要创建子域名的话
如果您想访问 http://svn.hoge.com/(仓库名称),可以尝试使用VirtualHost。
sudo vi /etc/apache2/sites-available/svn.conf
<VirtualHost *:80>
ServerName svn.hoge.com
<!--单独的 Apache 日志 -->
CustomLog ${APACHE_LOG_DIR}/access_svn.log combined
ErrorLog ${APACHE_LOG_DIR}/error_svn.log
<Location />
DAV svn
SVNParentPath /var/lib/svn
AuthType Digest
AuthName "realm"
AuthUserFile /etc/apache2/.htdigest
Require valid-user
</Location>
</VirtualHost>
sudo a2ensite svn.conf # svn.hoge.com 启用设置
备份和恢复
如果您能定期使用 cron 或其他方式执行以下命令,您就可以放心了。
# 备份
sudo svnadmin dump {项目名称} > {转储文件名}
# 修复
sudo svnadmin create {项目名称}
sudo svnadmin load {项目名称} < {转储文件}
sudo chown -R www-data.www-data {项目名称}