摘要:版本控制在 软件工程的领域中隶属于软件建构管理(Configuration Management)的范畴,是软件开发流程当中相当基本且重要的一环,因此版本控制系统可说是开发人员必备的工具之一。本文将介绍一个开放原始码的版 本控制系统:Subversion,说明相关工具的安装步骤,并且透过实例操作示范如何在Visual Studio .NET 2003里面对项目进行版本管理。
Subversion 是一个自由/开放源码的版本控制系统,也是说 Subversion 管理着随时间改变的档案,这些档案放置在一个中央档案库 (repository) 中,这个档案库,很像一个寻常的档案服务器,不过它会记住每一次档案的变动。这样你可以把档案回复到旧的版本,或是浏览档案的变动历程,许多人会把版本 控制系统想象成某种 “时光机器”。
目的:
在 Windows2003 Server 上安装及设定 Subversion,以便于团队成员透过 Internet 协同开发软件项目,并有版本控管功能。
在用户端安装 Subversion 的 Client-side 工具:TortoiseSVN,可以整合与档案总管整合在一起,利用 GUI 方式提供了建立档案库、以及汇入、汇出等功能。
本文提供一个简易的安装指南,说明在 Windows 环境下安装 Subversion 服务器的步骤,以及 TortoiseSVN 用户端工具的安装步骤。
1. 简介
Subversion 是一个版本控制系统,它是根据 CVS(Concurrent Versions System)的功能为基础来设计,但是改进了一些 CVS 的缺点,例如:在 CVS 中搬移档案目录很不方便,Subverion 则连目录的异动都纳入版本管理;此外,它也增加了其他的功能,例如:不可分割的送交(如同数据库交易的概念,送交多个档案时,若有任何一个档案失败,则这 次送交的所有档案都不会进入档案库中)、支援多种网络协定、一致的档案差异比对(不管什么档案类型,均使用二进制差异比对方式)等等。
由于目前手边查到的 Subversion 文件,主要都是针对 Unix用户来撰写,所以这份文件特地针对 Windows环境下安装 Subversion 的步骤来说明,希望透过这份文件,能够帮助你很快的把 Subversion安装起来。
在安装过程中,会需要输入一些命令列的指令,本文不会详细解释某些指令的用途和意义,因此你除了要熟悉 DOS 的基本指令,还应该随时查阅 Subversion 的电子书(有中文版),以了解 Subverion 命令列工具的使用方法。图形化界面虽然方便,但是熟悉命令列工具的使用,才能让你得到完全的自由。
1.1 阅读基本观念
如果你缺乏版本控制系统的基本观念,算能够顺利安装好 Subversion,可能安装完成后不知道下一步怎么做了。这里只简单的提一点必要的基础观念,记住你终还是得阅读 Subversion 的官方文件。
1.2 作业环境与软件版本
以下是本文件使用的作业环境与软件版本:
Windows 2003 Server with SP1
Apache HTTP Server v2.0.55
Subversion v1.2.3
TortoiseSVN 1.2.6 build 4786
2. 安装与建立 Subversion 服务器
本节介绍安装 Subversion 所需的步骤,请准备一台稳定的机器,作为 Subversion 的服务器。
2.1 安装 Apache HTTP Server
到http://httpd.apache.org下载 Apache HTTP Server 2.0 版 for Windows 的安装程序,我下载的档案是 apache_2.0.50-win32-x86-no_ssl.msi。
下载之后直接安装,安装过程很简单,不赘述了,但安装之前请先检查你的计算机是否有安装 IIS,由于 Apache 预设使用 80 port,会跟 IIS 的网站冲突,你必须把 IIS 的 Web 站台关闭,再安装 Apache HTTP Server。
安装完成以后,开启浏览器,浏览网址http://localhost看看有没有出现安装成功的网页。
2.2 安装 Subversion
1.到http://subversion.tigris.org/下载新版的 Subversion,你可以下载 .zip 或者打包好的自动安装程序,我下载的是档案svn-1.2.3-setup.exe。
2.下载后直接安装,安装过程都是下一步,没什么特别的。在此Windows安装版增加了Apache modules的选项,必要的环境变量都帮你设定好了。
2.2.1 手动安装Apache modules
以下步骤叙述手动安装Apache modules的程式(如果你下载的是 .zip 档,要自行设定)。
把 $SVN_Install/bin/目录下的 mod_dav_svn.so、 mod_authz_svn.so复制到 $Apache2_Install/modules/目录下。
把 $SVN_Install/bin/目录下所有的dll档复制到 $Apache2_Install/bin/。
接着用文书编辑器开启 Apache HTTP Server 的 httpd.conf(在 /conf/ 目录下),寻找一堆 LoadModule 指令,先找到以下两行:
#LoadModule dav_module modules/mod_dav.so#LoadModule dav_fs_module modules/mod_dav_fs.so把前面dav_svn_module的 '#' 字元删除,然后把下面几行文字加到这群 LoadModule 指令的后面:LoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.so
重新启动 Apache HTTP Server。
clearcase/" target="_blank" >cc; BORDER-LEFT: medium none; WIDTH: ; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width="" border=1>
问题排除
如果 Apache HTTP Server 无法启动,请依下列步骤检查:1. 检查 Subversion 的路径是否有在系统的 %PATH% 环境变数里面。2. 检查你加入 httpd.conf 里的专案是否正确,记住 mod_dav_svn.so 和 mod_authz_svn.so 必须在其他 mod_dav*.so 模组之后载入。3. 检查你加入的档案。若dll档没有在正确位置,将无法正常启动。
2.3 设定 Subversion 档案库的路径
现在要设定Apache http.config档中 SVN URL 路径与档案库实体路径的对应关系。对应的方式有两种,分别是 SVNPath 与 SVNParentPath。
2.3.1 SVNPath
SVNPath 适合用来个别指定档案库的路径,语法是:
<Location /svn/repos_name>DAV svnSVNPath /absolute/path/to/repository</Location>
其中 "/svn/repos_name" 是用户端存取特定档案库的 URI(Uniform Resource Indentifier),SVNPath 后面指定的路径则是档案库的路径,假设我们的档案库实际存放的路径是 d:svnMyProject,并且希望用户端使用http://myserver/svn/myprj的 URL 来存取档案库,那么要加入 httpd.conf 的内容是:
<Location /svn/myprj>DAV svnSVNPath d:svnMyProject</Location>
注意 Location 标签后面的 /svn/myprj 的第一个斜线不可少!
2.3.2 SVNParentPath
如果你的档案库都集中放在某个目录之下,例如:d:svn,那你可以使用 SVNParentPath 的方式指定档案库的根路径,例如:
<Location /svn>DAV svnSVNParentPath d:svn</Location>
这表示可以让任何人都可以透过http://myserver/svn/<档案库名称> 的方式,存取位于 d:svn 这个目录以下的所有档案库。也是说,这个设定动作只需要一次,如果使用 SVNPath,你必须为各个档案库分别指定对应的路径。
以上两种设定方式都可以,方便起见,这里我用 SVNParentPath 来统一指定所有档案库的父层 URL 路径。
将 的设定加到 Apache HTTP Server 的 httpd.conf 档尾行了。接着便可以开始建立档案库。