首页 > 代码库 > linux svn安装和配置

linux svn安装和配置

svn概述

众所周知,svn是一种集中式的版本控制工具,是cvs的改进版,那么svn相比cvs的好处在哪里呢?

  • 基于目录的版本控制系统(传统的CVS都是基于单个文件进行版本控制的,而SVN可以随意去除任何一个文件、目录的任何一个历史版本)
  • 原子提交(提交多个文件时,如果一个文件发生冲突,则其他修改都不会被提交)
  • 高效的分支与标签
  • 多种访问方式(svn提供了一个抽象的网络访问层,可以通过不同的写来来对其进行访问)
  • 对二进制文件的支持
  • 平台无关

svn在linux下的安装

Step1:安装必须的包

这里的linux的发行版是centos 6.4,使用yum源进行安装。

  • yum install subversion httpd mod_dav_svn

说明:
subversion (SVN服务器)
httpd mod_dav_svn (用于支持WEB方式管理SVN服务器)

Step2:基本的SVN服务器配置
这里最常用的命令是svnadmin,这个命令除了提供创建Subversion版本库的功能,这个程序使你可以维护这些版本库。
其中在你无网络,无google的情况下,最实用的命令就是svnadmin help

1, 建个svn的根目录,因为项目不止一个

  • mkdir -p /home/svntest/

2,新建一个新的空的版本仓库(subversion repository)

  • svnadmin create /home/svntest/repos

3,初始化版本仓库中的目录

  • svn import  /home/svntest/repos/ file:///home/svntest/repos -m “初始化SVN目录”

4,添加用户
要添加SVN用户非常简单,只需在/home/svn/svntest/repos/conf/passwd文件添加一个形如“username=password”的条目就可以了。为了测试,我添加了如下内容:

3,修改用户访问策略

/home/svntest/repos/conf/authz记录用户的访问策略,这里主要是给上步配置的用户权限,这里的配置见下图。

说明:r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

4,修改svnserve.conf文件,让用户和策略配置升效.
tips:首先检查svnserve.conf文件,看有没有把password-db = passwd前对#去掉,并且要顶格;authz-db = authz同理。否则可能会出现svn: 认证失败

5,经历了上述步骤之后,你就可以启动svn了

  • svnserve -d -r /home/svntest

说明:在这里特别的要注意,/home/svntest是仓库的根目录;另外这时候启动svn的server是svn自己提供的独立服务器,通过svn://来访问。

6,忙乎了这么久,测试一下吧

  • svn co svn://localhost/repos  repos

svn server对http的支持

通过上述步骤之后,只是svn可用,但是还不能通过浏览器http来访问svn。
通过 Http 协议访问版本库是 Subversion 的亮点之一。使用 Http 协议意味着只需要打开浏览器,输入 URL 即可轻松的浏览整个版本库。灵活通常带来复杂性,Http 方式相对于 svnserve 方式来说需要更多的配置。
1,安装apache,即httpd 服务。

2,确认加载一个特殊的模块mod_dav_svn。并测试apache可以正常启动。(以上两步已经通过yum安装过了)

  • #cd /etc/httpd/modules
  • #ls | grep svn
             mod_authz_svn.so
mod_dav_svn.so


3,设置 /etc/httpd/conf.d/subversion.conf

a. module的配置一定要保证下面的两句话存在于配置文件中,否则无法在如svn的模块,就无法访问svn的仓库了:LoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.sob. 仓库目录配置刚在上述已经配置了repos这个仓库目录chown -R apache.apache repos(修改svn目录的属主为apache帐号)加入以下配置:<Location /repos>DAV svnSVNPath /home/svntest/reposAuthType BasicAuthName "password for svn server"AuthUserFile /home/svntest/repos//conf/pwdfileRequire valid-user</Location>c.下面建立可访问用户文件htpasswd -c /home/svntest/repos/conf/pwdfile yhw这句是交互式的,会让你输入密码。d,重起Apacheservice httpd restart

4,用浏览器访问http://localhost/repos/,输入你刚才输入的用户名密码,就OK了

Tips:需要注意的是,http和svn方式访问svn的验证是两套不同的验证方式, 通过http访问的账号是Apache http验证的。 通过svn://访问的账号是svn仓库conf目录下passwd指定的。两个是独立的认证方式。