SVN是一款开放源代码的版本控制系统,可以单独使用,也可以集成到Trac使用。
SVN管理软件源代码;Trac进行缺陷追踪管理。
安装过程
$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn # 如果需要Apache2支持SVN
配置服务
创建 SVN 仓库
创建组和用户:
sudo addgroup subversion
sudo usermod -G subversion -a www-data
准备SVN仓库目录:
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir myproject
$ sudo chown -R root:subversion myproject
$ sudo chmod -R g+rws myproject
创建SVN仓库:
$ sudo svnadmin create /home/svn/myproject
直接访问SVN仓库(file://)
当客户端与服务端在同一台计算机上,可以直接访问SVN。
注:如果并不确定主机的名称,必须使用三个斜杠(///),而如果指定了主机的名称,则必须使用两个斜杠(//).
$ svn co file:///home/svn/myproject
$ svn co file://localhost/home/svn/myproject
注:SVN使用可以参考下面的文档
使用Subversion进行版本控制
通过 WebDAV 协议访问(http://)
加入下面的代码片段到 /etc/apache2/mods-available/dav_svn.conf
注:如果需要用户每次登录时都进行用户密码验证,请将<LimitExcept GET PROPFIND OPTIONS REPORT>与</LimitExcept>两行注释掉。
注:用户密码文件可以使用Trac配置的那个文件,这样可以统一通过Trac的web接口管理用户。
<Location /svn/myproject>
DAV svn
SVNPath /home/svn/myproject
AuthType Basic
AuthName “myproject subversion repository”
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
配置用户信息
$ sudo htpasswd -c /etc/subversion/passwd user_name # passwd file does not exist
$ sudo htpasswd /etc/subversion/passwd other_user_name # passwd file exist
重启服务
sudo /etc/init.d/apache2 restart
可以访问SVN
$ svn co http://hostname/svn/myproject myproject –username user_name
通过具有安全套接字(SSL)的 WebDAV 协议访问(https://)
方法同上,需要在 Apache 上先配置 SSL
Apache2上安装配置SSL
Create a Certificate
$ sudo apt-get install ssl-cert
$ sudo mkdir /etc/apache2/ssl
$ sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
Install Module
$ sudo a2enmod ssl
Create virtualhost
$ sudo cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/ssl
$ sudo vi /etc/apache2/sites-available/ssl # Add the following
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
ServerSignature On
Enable SSL virtualhost
$ sudo a2ensite ssl
$ sudo vi /etc/apache2/sites-available/default # update default config
<virtualhost *:80>
Restart Apache2
$ sudo /etc/init.d/apache2 restart
通过自带协议访问(svn://)
修改 /home/svn/myproject/conf/svnserve.conf 来配置其访问控制
# [general]
# password-db = passwd
修改 /home/svn/myproject/conf/passwd 来配置用户,明文密码
username = password
启动SVN服务,SVN 监听默认的端口(3690)
$ svnserve -d –foreground -r /home/svn
远程访问SVN
$ svn co svn://hostname/myproject myproject –username user_name
通过具被SSH隧道保护的自带协议访问(svn+ssh://)
注:SVN配置和服务器进程同上面
安装 SSH Server
$ sudo apt-get install ssh
svn+ssh:// 协议使用 SSH 加密来访问 SVN 文件仓库
$ svn co svn+ssh://hostname/home/svn/myproject myproject –username user_name
注:使用svn+ssh访问时需要SVN完整路径,例 /home/svn/myproject
Refer to
SubVersion服务安装设置
how to setup Subversion alias SVN on Ubuntu
