SVN初相识

最近boss给我分了个师弟,终于结束了孤军奋战的日子,虽然师弟也不怎么会,但有总比没有好,现在两个人也算个小团队了,代码拷来拷去很麻烦,我就试着自己搭建个SVN服务器,搭建过程中遇到了一些问题,记录在这里备忘。

SVN(即Subversion)服务器端软件原始版本就叫Subversion,最新版本为Subversion1.6.9,如果采用原始版本,则网络应用层协议使用的是SNV独有的snv协议,在客户端软件中(例如:TortoiseSVN)就可以使用类似svn://localhost/project这样的地址来访问服务器。SVN也有很多衍生版本,这些版本集成了web服务器,这样使得安装和配置比较容易,并且可以在浏览器中访问SVN服务器,有代表性的两个是:VisualSVN和CollabNet Subversion,前者服务器端是免费的,客户端可以集成在Visual Studio中,是收费的(当然你也可以采用免费的TortoiseSVN)。后者是开源软件,理所当然是免费的。它们均集成了Apache Web服务器。下面主要讲述CollabNet Subversion的安装与配置。

1.CollabNet Subversion的安装

1、安装

  * Subversion1.5版本的安装包自带了Apache2.2.8,所以无需额外安装Apache服务器
  * 一路默认安装,如果需要修改仓库根目录或者Apache2.2.8端口可以自行修改为自己的信息,Apache默认端口为80,Subversion默认仓库存储路径为C:/svn_repository。
    安装的过程中会自动将Subversion和Apache注册成服务,安装完成后重启一下电脑,运行services.msc查看服务,可以看到 “Apache2.2”和“Subversion Server”两个服务已经自动启动,如果不想让他们自动启动,可以修改为手动启动。

    注:安装结束时没有提示重启系统,但重启之前Apache服务无法启动。

  * 安装好后进入安装目录C:/Program Files/CollabNet Subversion Server,里面有一个httpd目录,这里面就是Apache服务器。
    进入httpd下的bin目录,可以看到Apache服务器的各个程序
    双击“ApacheMonitor.exe”打开Apache控制台,可以看到控制台的状态栏有如下内容:
    Apache/2.2.8 (Win32) DAV/2 SVN/1.5.0
    这说明Apache与Subversion在安装的过程中已经整合成功。

2、配置用户和权限

  注:下面用的用户配置文件passwords.auth和权限配置文件access.auth的生成、配置及使用方式,在我的另一篇文章 “Apache2.2.9+Subversion1.4.6(for Apache2.2.X)在windows下的配置与权限设置”中有详细的介绍,这里就不再赘述。

   * 进入安装目录下的httpd目录中的conf目录,如:
C:/Program Files/CollabNet Subversion Server/httpd/conf
    打开httpd.conf文件,先看看文件最后面,已经自动为我们配置好了仓库的信息如下:
<Location /svn>
DAV svn
SVNParentPath C:/svn_repository
</Location>
    在这里我们先加入,用户配置,代码如下:

<Location /svn>
DAV svn
SVNParentPath C:/svn_repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile "C:/svn_repository/passwords.auth"
Require valid-user
</Location>

    加入那四行新的信息后,重新启动Apache服务器,一切正常,这是可通过浏览器输入http://localhost/svn测试,会提示输入用户名、密码,用SVN客户端软件同样可以测试得到相同的结果。

    下面是本文的主要内容,及权限配置的注意事项。

    我们再在代码中加入权限配置的代码AuthzSVNAccessFile "C:/svn_repository/access.auth"
    修改后的代码如下:

<Location /svn>
DAV svn
SVNParentPath C:/svn_repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile "C:/svn_repository/passwords.auth"
AuthzSVNAccessFile "C:/svn_repository/access.auth"
Require valid-user
</Location>


     此时重启Apache服务器,发现无法启动,提示“The requested operation has failed!”

     这是我们需要再次修改httpd.conf配置文件,加入mod_authz_svn.so的加载项。

     找到配置文件的116行(推荐使用UtralEdit或EditPlus编辑工具,不要一行一行的数哦),115和116行的代码如下:

115 LoadModule dav_module         modules/mod_dav.so
116 LoadModule dav_svn_module     modules/mod_dav_svn.so

     其中116行中的mod_dav_svn.so文件就是以前我们安装Subversion1.4.6和Apache时,由Subversion
     的lib目录拷贝到Apache的modules目录的,并在Apache的httpd.conf下新加入的那行代码。   

     再找到84行的代码,会发现和115行的代码一样,只是多了一个#号,表示这一行被注释了,115行的作用就是使这行代码重新生效,这就是以前取消注释的那行代码。

84  #LoadModule dav_module modules/mod_dav.so
   
     如果装过Subversion以前的版本,应该记得当时需要拷贝两个文件到Apache的modules目录下,一个
     是上面说过的mod_dav_svn.so,另一个就是mod_authz_svn.so。在Subversion1.5的安装目录下的 Apache目录httpd的modules中已经包含了mod_authz_svn.so文件,所以无需拷贝,只需要加入一行加载代码即可。

     再次回到116行的位置,在他的下面加入如下一行代码,这行代码就成为了117行:

     LoadModule authz_svn_module  modules/mod_authz_svn.so

     此时我们再保存配置文件,重启Apache服务器,发现又可以正常的启动了。

     到此,我们完成了Subversion1.5的安装与默认配置工作,可以在实际的开发中使用Subversion1.5了。

2.CollabNet Subversion的配置

1、建立版本库(本文以在D:/盘下操作为例)

  * 在Windows开始菜单的运行中执行cmd打开命令窗口,然后转到D:/根目录
  * 在D:/根目录下执行D:/mkdir svnroot建立子目录svnroot,再转入svnroot目录下
  * 在D:/svnroot目录下首先执行D:/svnroot/mkdir svn1建立子目录svn1,在进入svn1中,在建立三个子文件夹aaa,bbb和ccc,建好的目录结构如下:
     C:/svnroot/svn1/aaa
                    /bbb
                    /ccc
  * 然后执行svnserve create D:/svnroot/svn1建立仓库svn1

2、配置单仓库的用户权限

  * 再次打开Apache安装目录下conf目录中的httpd.conf文件,将光标移到问文件的最末端加入如下代码:

<Location /svn>
#这里指定了仓库的访问路径,即http://localhost/svn
DAV svn
#指定仓库在硬盘上的实际位置
SVNPath D:/svnroot/svn1
#认真方式为基本方式
AuthType Basic
#认证窗口的标题
AuthName "Subversion Repository"
#认证用户配置文件实际位置
AuthUserFile "D:/svnroot/passwords.auth"
#认证权限配置文件实际位置
AuthzSVNAccessFile "D:/svnroot/access.auth"
#设定为需要进行认证
Require valid-user

</Location>

  * 接下来我们创建认证所需的两个文件:用户文件和权限文件
    到D:/svnroot下建立文件passwords.auth和access.auth(可以用记事本创建后修改文件名)

  * 配置认证用户文件passwords.auth,内容如下:
  
    tom:tom
    cat:cat
    hello:world
  
    在这里密码都没有加密,如果需要设置密码加密,可以用Apache安装目录下bin目录中的htpasswd.exe程序生成,具体生成方法如下:
  
    首先要将这个目录配置到环境变量的path中,我的路径是
    C:/Program Files/Apache Software Foundation/Apache2.2/bin
    然后打开命令窗口,在命令行中使用如下命令
    C:/htpasswd -c D:/svnroot/passwords.auth tom
    回车后会提示输入密码,输入tom,再回车会提示输入确认密码,再次输入tom就可以了
    命令行中的参数-c表示创建一个文件,第一次运行创建好了,再添加别的用户的时候就
    不要再使用这个参数了,如我再添加cat和hello用户
    C:/htpasswd D:/svnroot/passwords.auth cat
    C:/htpasswd D:/svnroot/passwords.auth hello
    这样建立的用户密码默认使用的MD5加密,你打开文件以后看到的可能就是如下格式:
    tom:7Z/80Al6$WTqVrBgshc/Bxi6YYkUga1$apr1$
    cat:kNrG459T$qfAZ7MpgpFcdd2xp25gST1$apr1$

    到此我们就添加好了三个用户tom,cat和hello,他们的密码分别为tom,cat,world

    * 配置认证权限文件access.auth
    直接在D:/svnroot下建立access.auth文件即可,然后填入如下内容

[groups]
dev1 = tom,cat  #开发用户组1
dev2 = hello      #开发用户组2

[/]
* = r   #设定所有用户对根目录有读权限,即浏览权限

[/aaa]  
@dev1 = rw #设定dev1组成员对aaa目录有读和写权限
@dev2 =  #设定dev2组成员对aaa目录没有任何权限

[/bbb]
@dev1 =  #设定dev1组成员对bbb目录没有任何权限
@dev2 = rw #设定dev2组成员对bbb目录有读和写权限

[/ccc]
@dev1 =  #设定dev1组成员对ccc目录没有任何权限
@dev2=  #设定dev2组成员对ccc目录没有任何权限

 

    到此我们为不同用户分组定义了权限,大家可以使用不同的用户
    进行browse/import/checkout试验(在客户端软件上进行)

    访问路径为http://localhost/svn
 

参考了前人的经验:

http://www.subversion.org.cn/?action-viewnews-itemid-62

http://www.cnblogs.com/shiningrise/archive/2009/12/23/1630871.html

http://blog.csdn.net/jnstone3/archive/2009/03/06/3962521.aspx

http://jiangzif0.blog.163.com/blog/static/48423595200911234299230/

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值