关于Subversion系统

Kenda ·
更新时间:2024-09-21
· 650 次阅读

多年来,并发版本系统(CVS)一直是在Linux上管理代码或者文本的标准。作为基于RCS上建立但却允许多用户协作的系统而言,CVS记录所有文件的修改信息。这对于程序开发者、网络设计者和系统管理员而言,是非常有用的。 然而,CVS逐渐显示出它的衰老,出现了相似的源代码管理软件。然而大多这种东西都是以牟利为主要目的的。 Subversion是一种相对新鲜的源代码管理系统。虽然事实上它还在不断的反展之中,但是Subversion已经是一个非常稳定而且成熟的产品。它是一个全新的系统,其功能可以和CVS媲美,同时,它要比CVS更直观,更容易操作。本文Subversion的安装和一些特殊功能作一个介绍。 安装服务器端

下载Apache和SVN源码包 从官方网站台下载httpd-2.0.52.tar.gz,subversion-1.1.1.tar.gz

(因为redhat 9默认安装的Apache没有并包含--enable-so选项,所以无法产生mod_dav_svn.没有这个模块,SVN无法采用http方式运行,所以必须重新编译新的Apache) 以root身份执行: #tar zxvf httpd-2.0.52.tar.gz #cd httpd-2.0.52 #./configure --enable-dav --enable-so --enable-maintainer-mode #make #make install 此时会产生/usr/local/apache2目录,接着执行: #tar zxvf subversion-1.1.1.tar.gz #./configure --with-apxs=/usr/local/apache2/bin/apxs # rm /usr/local/lib/libsvn* # make clean && make && make install

此时会自动在/usr/local/apache2/conf/httpd.conf添加 LoadModule dav_svn_module  modules/mod_dav_svn.so 安装完成后,运行svnserver --version确认版本为1.1.1。 SVN服务器安装结束.

安装客户机端

window客户机: 直接安装TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi,方法同一般软件安装相同。 Linux客户机: 方法舆安装服务器相同。 (注意redhat 9默认安装的SVN版本为0.17.1,它的客户端命令svn无法舆新的SVN服务器通讯,必须重新安装)

建立仓库Repository

Subversion 的档案库是个中央仓储, 用来存放任意数量项目的受版本控管资料,建立方法很简单 #svnadmin create path/to/repos 举个例子: #svnadmin create /home/mysvn #chown –R nobody /home/mysvn 运行服务器

Subversion服务器有两种运行方式,一是可以作为Apache 2.0的一个模块, 以WebDAV/DeltaV协议与外界连通;另外,也可使用Subversion 自带的小型服务器程序svnserve。该程序使用的是自带的通讯协议,可以很容易地透过SSH以 以http方式运行 在/usr/local/apache2/conf/httpd.conf中加入: <Location /svn/repository>  DAV svn  SVNPath /home/mysvn </Location> 在服务器的浏览器中输入网址: http://localhost/svn/repository/ 这时候,你会看到这样的显示:

这表明服务器已经以http方式正常运行了. 以svnserve方式运行 这种方式的运行又可以分为以下两种(这和vsftp有些相似) 1) standalone mode 直接运行 #svnserve –d 运行 lsof -i :3690可以看到SVN服务器已经在运行 2) x.netd mode 在/etc/xinetd.d/下生成svnserve文件,内容如下 service svnserve { disable = no socket_type             = stream protocol                 = tcp wait                    = no user                    = apache server                  = /usr/local/bin/svnserve server_args             = -i } 编辑 /etc/services ?,加入底下两行: svnserve        3690/tcp                        # Subversion svnserve svnserve        3690/udp                        # Subversion svnserve 重启xinetd服务,运行 lsof -i :3690可以看到SVN服务器已经在运行

客户机访问

客户机的访问方法舆服务器的运行方式有直接关系 window客户机: 1) 服务器以http方式运行 安装完TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi后,在你想工作的目录下点击右键,执行checkout,按上图输入即可。

2) 服务器以svnserve方式运行 同上的区别只是URL of repository变为 svn://svn服务器ip/home/mysvn 或者 svn+ssh://svn服务器ip/home/mysvn (注意不是//svn服务器ip//svn/repository) linux客户机: 1) 服务器以http方式运行 执行 #svn checkout http: //svn服务器ip/svn/repository 2) 服务器以svnserve方式运行 执行 #svn checkout svn://svn服务器ip/home/mysvn 或者 #svn checkout svn+ssh://svn服务器ip/home/mysvn

客户认证机制

这舆服务器的运行方式有关 服务器以http方式运行 比如我们想给 Sally 与 Harry 送交存取档案库的权限. 首先, 我们必须把它们加入到密码档案. # ### 第一次: 以 -c 建立档案 # htpasswd -c /etc/svn-auth-file harry New password: ***** Re-type new password: ***** Adding password for user harry # htpasswd /etc/svn-auth-file sally New password: ******* Re-type new password: ******* Adding password for user sally # 接着,在/usr/local/apache2/conf/httpd.conf的加入: <Location /svn/repository >  DAV svn  SVNPath /home/mycvs  AuthType Basic  AuthName "Subversion repository"  AuthUserFile /etc/svn-auth-file Require valid-user </Location>



subversion

需要 登录 后方可回复, 如果你还没有账号请 注册新账号