SVN安装指南 

 

版本控制之于程序员,就好比安全网之于高空秋千表演者。知道安全网就在那里,万一自己摔落它能够提供保护,高空秋千表演者才能放心大胆地在空中飞跃。同样,版本控制使您有能力去冒以往想都不敢想的风险。如果哪儿出了错,您总是可以使自己的代码回复到一个已知的、工作正常的版本。您可以在不触及主干的分支中进行试验,而不会影响到其他小组成员。在已经发布的产品的较老版本中发现 bug 时,您可以轻松检出特定版本,以确认、修订,并生成该 bug 的修补程序。如果没有版本控制,您必须极为慎之又慎,缓慢地推进,总而言之,生产力会更低。
Subversion 是一种开放源码的全新版本控制系统,支持可在本地访问或通过网络访问的数据库和文件系统存储库。不但提供了常见的比较、修补、标记、提交、回复和分支功能性,Subversion 还增加了追踪移动和删除的能力。此外,它支持非 ASCII 文本和二进制数据,所有这一切都使 Subversion 不仅对传统的编程任务非常有用,同时也适于 Web 开发、图书创作和其他在传统方式下未采纳版本控制功能的领域!
 
本安装基于Windows vista环境下进行安装与配置的,其它windows版本都可用;搭建此项目管理服务器首先必须要安装Apache服务器。
2.1 安装Apache
( 1)下载Apache
注意: Apache低于2.0.54的Windows版本的存在编译问题,低于2.0.54的版本不能与Subversion 1.2一起工作。2.2.X目前不能很好支持SVN 1.4.X。所以当前建议下载 Apache 2.0.63版本
 (2) 安装      
下载完成后运行 apache_2.0.63-win32-x86-no_ssl.msi ,根据提示进行操作。遇到系统要求输入SERVER的URL时,如果你的服务器没有DNS名称,请直接输入IP地址(此文件也可在安装后进行修改,该文件位于Apache Group/Apache2/conf/httpd.conf文件)。
   注意:如果你已经有了 IIS或其他监听80段口的程序,安装会失败,如果发生这种情况,直接到程序的安装目录/Apache Group/Apache2/conf,打开httpd.conf。编辑文件的Listen 80为其他可用的端口,例如Listen 8080,然后重新启动-这样就不会那个问题了,或者将其它应用的端口进行改之。
( 3)检查     
2.2 安装Subversion
( 1)下载 Subversion
在本实例中,选择下载svn-win32-1.4.6.zip此版本.
(2)安装
将svn-win32-1.4.6.zip解压到安装程序的目录下;(如果下载的是exe安装文件,可以根据指导安装, Subversion会自动认识到你安装了Apache,你就几乎完成了工作),本实例中采用解压方式进行安装,它不会自动找到Apache服务器,所以你还有额外的步骤。
  (3)后续
步骤1 从svn-win32-1.4.6/bin 中将mod_authz_svn.so mod_dav_svn.so复制到Apache Group/Apache2/modules下,再将svn-win32-1.4.6/bin目录下的所有dll文件全部复制到Apache Group/Apache2/bin文件夹下。
步骤2 找到Apache Group/Apache2/conf/httpd.conf文件,然后去掉如下几行的注释(删除 '#'标记):
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
将下面两行添加到LoadModule部分的最后。
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
进行如上后续修改后完成了SVN+Apache之间的WebDav的工作了。重启Apache以后可看到如下图:
这是安装最终的图,图中状态栏显示Apache/2.0.63(Win32) SVN1.4.6 DAV/2是由于还安装了mod_python,此步骤稍后将在Trac中讲解,如上安装好后应显示为Apache/2.0.63(Win32) SVN1.4.6 DAV.
( 1)建立版本库
首先建立一个用于存在SVN项目的版本库,本例中在D盘驱动器中建立目录var/svnhome,可通过如下命令建立版本库,当然如果你需要建立多个版本库只需将名称进行换名即可。
首先以cmd命令窗口进入svn-win32-1.4.6/bin目录结构下,输入:
>svnadmin create --fs-type fsfs D:/ var /svnhome/projects 回车,等待提示创建完成;完成后则进行相关密码以及权限设置
(2)设置密码文件
cmd 命令窗口进入路径 Apache Group/Apache2/ bin 目录 然后输入 :
> htpasswd -c D:/var/svnhome/projects/conf/<filename> <username>
本例中 filename 名称使用 passwordfile,username 名称使用 admin( 注意filename无需后缀名),这样 便可在 var/svnhome/projects/conf 目录下创建一个用户名为 admin 的passwordfile 文件 ,此文件 将在后面配置权限所用
此后添加用户,可使用如下命令:
>htpasswd filename <username>
删除用户,使用如下命令:                       
>htpasswd -D filename <username>
若对密码不想加密可使用-cp 参数,windows 平台下默认是MD5 加密
(3)设置权限文件
用文本编辑器在var/svnhome/projects/conf 路径下生成名为svnaccessfile的文件,此名称将在 Apache Group/Apache2/conf/httpd.conf 配置文件中所用,此处不使用扩展名。编辑一下内容:
[groups]
committers = admin
developers = Allen
[/]
* = r
@developers = r
@committers = rw
[projects:/]
@ developers = rw
基本含义是根目录下任何人有读权限, committers 组有读写权限;admin对projects读写权限,而 developers 组只有读的权限
备注: 如果有中文路径,那要把文件存成UTF8格式,不建议使用中文路径,这在编程当中是严格禁止的.
(4)配置服务
    编辑 Apache Group/Apache2/conf/httpd.conf 文件,添加下面代码。
 
 
<Location /svn>
DAV svn
SVNPath "D:/var/svnhome/projects"
 
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile " D:/var/svnhome/projects/conf/passwordflie"
AuthzSVNAccessFile "D:/var/svnhome/projects/conf/svnaccessfile"
 
Require valid-user
SVNAutoversioning on
ModMimeUsePathInfo on
</Location>
  
 AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定。访问文件 svnaccessfile 的语法与svnserve.conf和 Apache 的配置文件非常相似,以(#)开头的行会被忽略;在它的简单形式里,每一小节命名一个版本库和一个里面的路径;认证用户名是在每个小节中的选项名;每个选项的值描述了用户访问版本库的级别:r(只读)或者rw(读写),如果用户没有提到或者值留空,访问是不允许的; * 表示所有用户,用它控制匿名用户的访问权限;@符号区分组和用户。如:
 
[groups]
committers = zc, cjf
developers = Allen, admin, cjs
 
[/]
* = r
@committers = rw
 
[/branches/dev]
@developers = rw
 
[/tags]
tony = rw
[/private]
* =
@committers= r
 
使用 SVNParentPath 代替 SVNPath 来指定多个版本库的父目录时,其中所有的版本库都将按照这个策略文件配置。例如上例中 tony 将对所有版本库里的 /tags 目录具有读写权限。如果要对具体每个版本库配置,用如下的语法:
 
[groups]
project1_committers = zc, cjf
project2_committers = admin, Allen, cjs, tony
 
[repos1:/]
* = r
@ project1_committer = rw
 
[repos2:/]
* = r
@ project2_committer = rw
 
这样 repos1的 project1_committer 组只能对 repos1 版本库下的文件具有写权限而不能修改版本库 repos2 ,同样 repos2 的 project2_commiter 组也不能修改 repos1 版本库的文件。
备注: 如果使用<Location /svn/>可列出D:/var/svnhome/projects 下的版本库,若为<Location /svn>则不能访问http://127.0.0.1/svn下的项目,而只能这样访问,如http://127.0.0.1/svn/<projectname>
(5)配置内容说明

    设置
解释
<Location>
意思是Subversion版本库的URL是http://ipaddress/svn/
DAV svn
告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。
SVNPath
告诉Subversion需要查看的版本库位于D:/var/svnhome/projects之下
AuthType Basic
激活基本认证,就是用户名/密码
AuthName
用来说明弹出要求输入认证信息的对话框信息,可以使用中文.
AuthUserFile
指定使用认证密码的文件
AuthzSVNAccessFile
位置Subversion版本库的访问控制权限的路径文件
Require valid-user
指定只有输入了正确的用户/密码的用户可以访问URL

2.4 安装TortoiseSVN(可选)
此工具是客户端软件,主要可以用于从服务器上check版本库项目以及updata与commit等相关SVN的管理操作,其下载地址为:http://tortoisesvn.net/downloads,另外还可以下一个语言包,都在给其的subversion官方网站上能下到.
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐