摘要:
在 软件开发中,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,请先停止,可以使用以下命令:
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. 刚才建立的仓库只是一个空的仓库,里面没有任何的项目/文件,下面,我将演示一下怎么向该仓库添加项目,使用以下命令
注意:以上命令必须单行输入,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 Subversion(http://svn.collab.net/repos/svn/trunk/INSTALL);
b) 、CVS to SVN Crossover Guide(http://svn.collab.net/repos/svn/trunk/doc/user/cvs-crossover-guide.html);
c) 、apache文档2.0(http://httpd.apache.org/docs/2.0/);
相关推荐
Subversion(通常缩写为 SVN)是一种广泛使用的版本控制系统,旨在替代早期的 CVS。Subversion 提供了更高效能和增强的功能,解决了 CVS 的一些问题,使得团队协作和代码管理更为便捷。以下是 Subversion 的一些核心...
#### 二、构建版本控制环境 ##### 2.1 版本控制系统的重要性 版本控制系统是软件开发过程中不可或缺的一部分,它能够帮助开发者们有效地管理项目的变化历史。通过使用版本控制系统,团队可以轻松地回滚到之前的...
7. **与其他工具的集成**:介绍如何将Subversion与常见的开发环境(如Eclipse、IntelliJ IDEA)以及构建工具(如Maven、Gradle)集成。 8. **故障排查**:提供常见错误的解决方案,帮助用户应对日常使用中遇到的...
综上所述,Subversion 1.6.5是Windows环境下搭建版本控制服务器的优秀选择,其丰富的功能和良好的兼容性使得多人协作开发变得更加高效和有序。通过理解这些核心概念和操作,开发者可以更好地利用Subversion进行项目...
SubVersion(通常缩写为SVN)是一种广泛使用的版本控制系统,用于管理软件开发中的源代码和其他文件的变更。它允许团队成员协作,并确保在多人同时修改同一份代码时,能够有效地合并更改,防止冲突。本篇文章将深入...
这个"subversion-1.7.9.zip"文件是Subversion 1.7.9版本的压缩包,它包含了该版本的所有源代码、文档、构建脚本和其他必要的组件,允许用户在本地环境中安装和运行Subversion服务器。 1. **Subversion简介**: ...
Subversion(简称SVN)是一种广泛使用的版本控制系统,它提供了比CVS更先进的功能,如版本化的文件重命名、目录操作以及元数据版本控制。SVN还支持原子提交操作,允许通过HTTP/HTTPS协议进行远程访问,使得在不同...
Subversion(SVN)是一个开源的版本控制系统,用于管理对软件项目源代码的更改。它在软件开发领域中广泛使用,特别是在多人协作的环境中,帮助团队成员协同工作,跟踪文件的修改历史,以及解决合并冲突等问题。...
另一方面,"Setup-Subversion-1.8.8-1.msi"是Windows安装程序,用于在Windows环境中安装Subversion服务器。需要注意的是,描述中提到这个包仅包含服务器端,这意味着你需要寻找其他的客户端工具(如TortoiseSVN或...
Subversion(SVN)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。它允许多人协同工作,记录每次修改,以便团队成员可以共享代码、文档或其他类型的工作成果,同时保持历史版本的完整记录。本篇...
Subversion(SVN)是开源的版本控制...综上所述,"subversion-1.7.2.tar.gz"提供了Subversion的一个版本,适用于Windows平台,对于需要版本控制的团队来说,这是一个可靠的工具,可以帮助他们有效地管理和协作项目。
总之,Apache Subversion是Windows环境下进行协同开发和版本管理的重要工具,通过掌握SVN命令行工具的使用,开发团队可以高效地管理项目代码,跟踪变更,解决冲突,并确保代码的稳定性和一致性。
SubVersion(简称SVN)是一种广泛使用的开源版本控制系统,它允许用户管理文件和目录的历史版本,方便团队协作和项目管理。SubVersion的核心功能包括版本追踪、冲突解决、分支与合并以及备份恢复等,这些都是软件...
Subversion,通常简称 SVN,是一种广泛使用的版本控制系统,它可以帮助团队管理和跟踪项目的开发历史。相比于早期的 CVS 系统,SVN 提供了更强大的功能和更好的用户体验。 #### 二、在 Eclipse 中集成 Subversion ...
Subversion(SVN)是一个广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。这个"subversion-1.14.2.tar.gz"文件是一个压缩包,包含了Subversion 1.14.2版本的源代码。这个版本的发布可能包含了一些新特性、...
用户可以使用Subversion客户端(如TortoiseSVN for Windows)进行版本控制操作,如checkout、commit、update等。 总之,搭建Linux下的Subversion服务器需要对Apache服务器的配置和Subversion的工作原理有深入理解。...
Subversion,通常缩写为 SVN,是一款开源的版本控制系统,用于管理软件项目中的源代码和其他文件的变更。这个“svn-win32-1.6.12.zip”压缩包是Subversion的一个针对Windows操作系统的32位版本。版本号1.6.12表明这...