使用Subversion构建版本控制环境(Windows)

使用Subversion构建版本控制环境(Windows)

 

摘要:

    在 软件开发中,CVS在很长的一段时间内一直都是版本控制的首选。但是现在用户有了另一个或许是更好的选择SVN(subversion)。SVN是下一代 版本控制系统,完全可以替代CVS,CVS下的项目,也可以非常容易的转到SVN的控制之下(SVN项目主页是 http://subversion.tigris.org,Tigris本身就是一些在SVN控制下的开源项目,可以说是sourceforge的 SVN版本)。

    SVN是一个自由、开放源码、跨平台的版本控制系统。它是一个通用系统,可用来管理任何类型的文件, 其中包括程序源码。 

    SVN 的设计目标很明确,实现绝大部分CVS的已有功能,充分考虑现有的CVS用户,在使用方式上模仿CVS,同时开发了一系列工具,使得基于CVS的项目能够 顺利迁移到SVN上。作为新一代的版本控制系统,和CVS相比,它有很多优点,例如目录版本控制、不可分割的提交、一致的数据处理方式和更有效率的分支与 标记等。

    现在,好多开源项目已经开始转移到了SVN控制之下。作为软件开发者,使用Subversion控制所开发的项目是必然趋势,本文即以Apache+SVN为例,介绍了SVN环境的答建以及简单使用方法。

 

一、准备相关软件

a)       、Subversion服务器svn-win32-1.3.2.zip

      建议直接到http://subversion.tigris.org/下载最新版本

b)       、Subversion客户端TortoiseSVN-1.3.5.6804-svn-1.3.2.msi

TortoiseSVN是一个非常不错的SVN客户端,可以实现跟资源管理器的紧密结合。建议到http://tortoisesvn.tigris.org/下载最新版(相信很多使用过CVS的朋友应该用过TortoiseCVS吧)。

c)       、VS.NET使用SVN的插件AnkhSetup-0.5.3.1636.msi

AnkhSVN是一个相当不错的VS.NET的SVN插件,可以到AnkhSVN的官方网站下载最新版本http://ankhsvn.tigris.org/。有关AnkhSVN的更详细的信息,请访问http://ankhsvn.tigris.org/screenshots.html

d)       、Apache Web服务器(svn-1.3.2建议使用apache-2.0.54)。

可以到http://www.apache.org/dist/下载合适的版本,最好跟subversion软件中使用的版本一致,若要求的apache版本比较旧,可以到apache历史版本页面下载http://archive.apache.org/dist/

    e) 、TortoiseSVN简体中文语言包(LanguagePack-1.3.5.6804-win32-zh_CN.exe)          ,请到http://tortoisesvn.tigris.org/download.html选择下载相应的版本。

小技巧:

    以上软件下载完了后,不妨放到同一文件夹下,并附加一包含软件简单说明的readme.txt文件,以备日后使用。

二、软件安装

a)       、安装apache

Apache的安装相当简单、值得注意的一点是,若已经安装了IIS,请先停止,可以使用以下命令:

Net stop w3svc

b)       、安装TortoiseSVN &TortoiseSVN简体中文语言包

安装没什么特别之处,只要先安装TortoiseSVN在安装语言包即可。

c)       、安装Subversion.

                     i.              解压下载得到的svn-win32-1.3.2.zip到c:/usr/local/目录。并重命名为svn,即可/usr/local/svn/;

                  ii.              拷贝libeay32.dll、ssleay32.dll两个DLL件到c:/winnt/system32目录;

              iii.              拷贝libapriconv.dll、libdb43.dll、intl3_svn.dll到apache/bin目录;

                  iv.              拷贝mod_dav_svn.so、mod_authz_svn.so两个文件到apache的Modules/目录;

                     v.              在apache的conf/目录下建立一个文本文件mod_svn.conf输入以下内容

#加载相应模块

LoadModule dav_svn_module /usr/local/svn/bin/mod_dav_svn.so

LoadModule authz_svn_module /usr/local/svn/bin/mod_authz_svn.so

#LoadModule dav_svn_module   modules/mod_dav_svn.so

#LoadModule authz_svn_module modules/mod_authz_svn.so

 

#配置仓库

<Location /svn>

 DAV svn

 SVNParentPath /usr/local/repository#仓库父目录位于c:/usr/local/repository

 # SVNPath /usr/local/respository/svn1 #仓库目录

</Location>

                  vi.              若需要使用Apache验证则还需要做以下调整:

进入apache/bin目录,执行以下命令产生密码验证文件

htpasswd -cm /usr/local/svn/svn-auth-file user1

提示输入密码时输入该用户的密码

若还需要增加用户user2,则执行以下命令

htpasswd -m /usr/local/svn/svn-auth-file user2

删除某个用户(user2),可以使用下列指令:

htpasswd -D /usr/local/svn/svn-auth-file user2

使用htpasswd产生密码文件

              vii.              启用验证后,SVN相关配置如下

<Location /svn>

 DAV svn

 SVNParentPath /usr/local/repository#仓库父目录位于c:/usr/local/repository

 AuthType Basic

 AuthName "Subversion repository"

 AuthUserFile /usr/local/svn/svn-auth-file

 Require valid-user

 AuthzSVNAccessFile /usr/local/svn/svn-access-file

</Location>

           viii.              配置文件中使用到了svn-access-file,这个文件是用来控制用户访问SVN仓库权限的,下面就讲述以下access文件的配置。

[svn1:/]            //这表示,仓库svn1的根目录下的访问权限

user1 = rw          // svn1仓库user1用户具有读和写权限

user2 = r           // svn1仓库user2用户具有读权限

[svn2:/]            //svn2仓库根目录下的访问权限

user1 = r           // user1用户在svn2仓库根目录下只有读权限

user2 =             // user2用户在 svn2仓库根目录下无任何权限

#[/]                // 这个表示在所有仓库的根目录下

#* = r              // 这个表示对所有的用户都具有读权限

#[groups]           // 这个表示群组设置

#svn1-developers = user1,user2   // 这个表示某群组里的成员

#svn2-developers = user1

#[svn1:/]            

#@svn1-developers = rw// 如果在前面加上@符号,则表示这是个组权限设置

                  ix.              重启APACHE

注意:DocumentRoot目录与svn的SVNParentPath值不可设置为一样,否则可能会出现301 Moved Permanently…错误

 

                    

三、软件使用

a)       、使用命令行(CMD窗口模式)

创建新的版本库

svnadmin create /path/to/repository

svnadmin是有用的subversion系统管理命令,使用svnadmin help查看在线帮助

信息。

添加新的项目(import new project)

 

svn import project file:///repository_name/project -m "Comment"

svn import project http://yourhost/svn_dir/repository_name/project -m "Comment"

 

检出(checkout)项目

svn checkout file:///repository_name/project/trunk project

svn checkout http://yourhost/svn_dir/repository_name/project/trunk project

 

列出仓库中的项目(list)

svn list --verbose file:///repository_name/project

svn list --verbose http://host/svn_dir/repository_name/project

 

状态查询(status)

svn status

给出新文件,已经改变的文件和被删除的文件列表;

 

添加文件或目录(add)

svn add

 

删除文件或目录(delete)

svn delete

svn delete http://yourhost/svn_dir/repository/project_dir

 

提交(commit)

svn commit http://yourhost/svn_dir/repository/project_dir

 

更新(update)

svn update

更新仓库中的文件到本地。

 

标签和特殊版本项目

使用copy命令

svn copy http://yourhost/repos/project/trunk http://yourhost/repos/project/tags/1.0.0

用于创建某个特定版本的快照(snapshot);

svn list http://yourhost/repos/project/tags/1.0.0

b)       、下面我们就用以上介绍的命令创建一个测试仓库

                     i.              打开命令提示符,进入E:/repository目录,执行以下命令

                  ii.              重启apache,浏览http://localhost/repos/qjoa,若看到以下画面,则表示SVN已经正常工作

              iii.              刚才建立的仓库只是一个空的仓库,里面没有任何的项目/文件,下面,我将演示一下怎么向该仓库添加项目,使用以下命令

svn import D:\WorkSpace\OTH_007_QJTech-OA http://localhost/repos/qjoa -m "SVN init project"

注意:以上命令必须单行输入,import项目时,最好先去掉apache验证,否则将导致import项目失败!

                  iv.              OK,重新浏览http://localhost/repos/qjoa试试,若出现跟下图类似的画面,则表示项目导入成功;

 

c)       、TortoiseSVN操作简介

                     i.              选择语言

TortoiseSVN安装后,默认使用的是英文,为了使用中文需要执行以下操作,在windows资源管理器中右击TortoiseSVN->Settings.

弹出以下对话框,选择“中文(简体)”后点击应用,即更改默认显示为中文如下图所示:

                  ii.              添加项目(import)

进入需要导入的文件夹,右击 “TortoiseSVN”->“导入”,则可出现如下图所示对话框,在文件库路径中填写刚新建的仓库http://www.ilinux.com.cn/repos/qjoa,点击确定,即可完成项目的导入

              iii.              检出项目(checkout)

在工作目录新建一文件夹QJOA(我使用的是D:/workspace/qjoa),在有多个项目时,使用工作目录绝对是一个不错的习惯^_^,进入qjoa目录,右击,即出现如下图所示菜单

单击“SVN取出”,则出现如下图所示的画面,

填写适当的信息,单击确定,则TortoiseSVN将开始检出项目,如下图所示

 

                  iv.              列出项目

资源管理器中右击TortoiseSVN->文件库浏览器

在URL栏中填入仓库路径,就可以浏览仓库内容,如下图所示

                     v.              状态查询

                  vi.              添加文件或目录

选中要添加的文件夹或文件右击 “TortoiseSVN”->“添加”

              vii.              删除文件或目录

选中要添加的文件夹或文件右击 “TortoiseSVN”->“删除”

           viii.              提交修改

在工作目录,右击 —>“SVN提交”

                  ix.              更新

在工作目录,右击 —>“SVN更新”

注意:添加或删除后需要进行提交操作。更多的有关Subversion的详细用法,请查阅Subversion官方文档中文版本

 

 

四、相关资源

a)       Subversion中文站http://www.subversion.org.cn/);

b)       Subversion官方站http://subversion.tigris.org/);

c)       Subversion官方文档中文版本http://www.easyea.com/doc/CH/svnbook/);

五、参考

a)       Installing Subversionhttp://svn.collab.net/repos/svn/trunk/INSTALL);

b)       CVS to SVN Crossover Guidehttp://svn.collab.net/repos/svn/trunk/doc/user/cvs-crossover-guide.html);

c)       apache文档2.0http://httpd.apache.org/docs/2.0/);

 

 

 

下载本文档电子版本

posted @ 2011-03-16 09:30  Marksion  阅读(883)  评论(0编辑  收藏  举报