什么是Subversion?相信阅读这篇文章的人都知道也都在使用这个工具,它是开源的版本控制系统。它可以记录你对文件所作的每一次修改。
安装
sudo apt-get install subversion libapache2-svn
在ubuntu下安装是非常方便的,就上面的这个命令就可以搞定。前提是已经安装了apache服务器,这样你就可以通过http来访问Subversion。
创建svn rep
svnadmin create /path/to/repos/project
导入文件到svn代码库
svn import /path/to/import/directory file:///path/to/repos/project
访问途径
事实上你可以有多种不同方法来访问你的svn 代码库:如果svn库就在本机,你就可以通过file模式来访问,或者通过不同的网络协议来访问。
svn co file:///path/to/repos/project
或者
svn co file://localhost/path/to/repos/project
这个时候,svn库的权限控制是以当前操作的系统用户在文件系统上对文件的读写权限来控制的。
通过WebDAVfl协议访问(http://)
要通过http协议访问svn库,你首先需要安装好apache服务器,并将下面的配置内容放到apache的配置文件内:
上 面假设你的svn库是创建在/home/svn目录下,你可以修改成符合实际情况的目录。然后就可以通过http://hostname/rep名称来访 问了。要导入或提交修改到svn库,你需要给服务器以svn库目录的写权限,即给apache进行执行用户的写权限,一般是www或www-data。你 可以将svn库目录的所有都指定为www-data,
sudo chown -R www-data:www-data /path/to/repos
不过这样修改完后系统的其它用户就不能在本地导入或提交修改,除非他们有写权限。
既然通过http协议可以访问到你的svn库,那么网络上的别人也可以访问了,那么如何控制不让任何人都可以访问呢,最简单的是对你的svn库设置身分验证,只有分配到账户和密码的用户才可以访问,这个可以通过下列命令:
创建一个账户密码文件,这个文件不是在任何地方都可以的,而要和你上面的配置一样, AuthUserFile /etc/subversion/passwd指令指定的位置相符。
touch /etc/subversion/passwd
然后通过列表命令新增一个用户,执行后它会提示你设置密码
sudo htpasswd -c /etc/subversion/passwd user_name
之后任何在远程通过http协议来访问的用户都需要输入账户和密码。不过要注意的是这种简单的身份验证的密码传输是以文本形式明文直接传输,如果要考虑到安装因素你就要选择使用sll加密。
通过加密的WebDAV协议 访问 (https://)
这种方式的访问和上面的配置是差不多,只是需要在web服务器即apache上安装并配置digital 认证模块。
通过自定义的协议 访问 (svn://)
创建完svn库目录后,你就可以修改/path/to/repos/project/conf/svnserve.conf配置文件进行访问控制。如,将下列的注释去掉,你就相当于打开了针对这个svn目录的特定的访问控制了:
# [general]
# password-db = passwd
这样你可以在这个目录内创建一个passwd文件,
然后使用下列的格式添加用户和密码:
username = password
使用svnserve守护进程来运行subversion而不使用web服务器,用户就可以通过svn://协议来访问,如下:
可以通过下列命令获取更多信息:
$ svnserve --help
一理执行了 svnserve这个守护进程,subversion就开始侦听3690端口,这样就可以通过下列命令来访问了:
svn co svn://hostname/project project --username user_name
通过加密的自定义协议访问(svn+ssh://)
这个方法需要的配置基本上和上面一样。同时它还要求运行svnserve的服务器允许外来连接,即允许用户通过ssh连接,你可以通过尝试使用ssh看看能不能登陆,如果ssh可以登陆就OK了。
使用svn+ssh://这个协议使用 ssl加密访问svn库,所有的数据传输都经过加密,访问命令格式:
svn co svn+ssh://hostname/var/svn/repos/project
你必须使用完整的路径来访问(/path/to/repos/project) 。 当然如果服务器设置需要密码验证你需要输入相关的账户资料才能使用。
安装
sudo apt-get install subversion libapache2-svn
在ubuntu下安装是非常方便的,就上面的这个命令就可以搞定。前提是已经安装了apache服务器,这样你就可以通过http来访问Subversion。
创建svn rep
svnadmin create /path/to/repos/project
导入文件到svn代码库
svn import /path/to/import/directory file:///path/to/repos/project
访问途径
事实上你可以有多种不同方法来访问你的svn 代码库:如果svn库就在本机,你就可以通过file模式来访问,或者通过不同的网络协议来访问。
Table 14-1 Access Methods
Schema | Access Method |
file:// | direct repository access (on local disk) |
http:// | Access via WebDAV protocol to Subversion-aware Apache2 web server |
https:// | Same as http://, but with SSL encryption |
svn:// | Access via custom protocol to an svnserve server |
svn+ssh:// | Same as svn://, but through an SSH tunnel |
直接访问svn库(file://)
svn co file:///path/to/repos/project
或者
svn co file://localhost/path/to/repos/project
这个时候,svn库的权限控制是以当前操作的系统用户在文件系统上对文件的读写权限来控制的。
通过WebDAVfl协议访问(http://)
要通过http协议访问svn库,你首先需要安装好apache服务器,并将下面的配置内容放到apache的配置文件内:
- <Location /svn>
- DAV svn
- SVNParentPath /home/svn
- AuthType Basic
- AuthName "Your repository name"
- AuthUserFile /etc/subversion/passwd
- <LimitExcept GET PROPFIND OPTIONS REPORT>
- Require valid-user
- </LimitExcept>
- </Location>
sudo chown -R www-data:www-data /path/to/repos
不过这样修改完后系统的其它用户就不能在本地导入或提交修改,除非他们有写权限。
既然通过http协议可以访问到你的svn库,那么网络上的别人也可以访问了,那么如何控制不让任何人都可以访问呢,最简单的是对你的svn库设置身分验证,只有分配到账户和密码的用户才可以访问,这个可以通过下列命令:
创建一个账户密码文件,这个文件不是在任何地方都可以的,而要和你上面的配置一样, AuthUserFile /etc/subversion/passwd指令指定的位置相符。
touch /etc/subversion/passwd
然后通过列表命令新增一个用户,执行后它会提示你设置密码
sudo htpasswd -c /etc/subversion/passwd user_name
之后任何在远程通过http协议来访问的用户都需要输入账户和密码。不过要注意的是这种简单的身份验证的密码传输是以文本形式明文直接传输,如果要考虑到安装因素你就要选择使用sll加密。
通过加密的WebDAV协议 访问 (https://)
这种方式的访问和上面的配置是差不多,只是需要在web服务器即apache上安装并配置digital 认证模块。
通过自定义的协议 访问 (svn://)
创建完svn库目录后,你就可以修改/path/to/repos/project/conf/svnserve.conf配置文件进行访问控制。如,将下列的注释去掉,你就相当于打开了针对这个svn目录的特定的访问控制了:
# [general]
# password-db = passwd
这样你可以在这个目录内创建一个passwd文件,
然后使用下列的格式添加用户和密码:
username = password
使用svnserve守护进程来运行subversion而不使用web服务器,用户就可以通过svn://协议来访问,如下:
- $ svnserve -d --foreground -r /path/to/repos
- # -d -- daemon mode
- # --foreground -- run in foreground (useful for debugging)
- # -r -- root of directory to serve
$ svnserve --help
一理执行了 svnserve这个守护进程,subversion就开始侦听3690端口,这样就可以通过下列命令来访问了:
svn co svn://hostname/project project --username user_name
通过加密的自定义协议访问(svn+ssh://)
这个方法需要的配置基本上和上面一样。同时它还要求运行svnserve的服务器允许外来连接,即允许用户通过ssh连接,你可以通过尝试使用ssh看看能不能登陆,如果ssh可以登陆就OK了。
使用svn+ssh://这个协议使用 ssl加密访问svn库,所有的数据传输都经过加密,访问命令格式:
svn co svn+ssh://hostname/var/svn/repos/project
你必须使用完整的路径来访问(/path/to/repos/project) 。 当然如果服务器设置需要密码验证你需要输入相关的账户资料才能使用。