摘要:
在 软件开发中,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 构建版本控制环境 大家互相学习
使用Subversion进行版本控制 PDF中文版
用Subversion 构建版本控制环境的相关文章
使用Subversion进行版本控制针对 Subversion 1.4(根据r2866编译) 参照网页版 http://svndoc.iusesvn.com/svnbook/1.4/制作而成。 目录 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书的结构 本书是...
详细介绍了svn的基本概念,配置以及高级应用等。
首先我们先来认识一下Subversion二.Subversion版本控制环境在Windows系统下的安装三.Subversion各种客户端的使用参考资料本文将介绍如何通过Subversion来构建小组开发过程中最为重要的版本控制环境,包括...
Subversion 是一个自由/开放源码的版本控制系统, 也就是说 Subversion 管理着随 时间改变的档案. 这些档案放置在一个中央 档案库 (repository) 中. 这个档案库 很像一个寻常的档案服务器, 不过它会记住每一...
Subversion 是一个自由/开放源码的版本控制系统, 也就是说 Subversion 管理着随 时间改变的档案. 这些档案放置在一个中央 档案库 (repository) 中. 这个档案库 很像一个寻常的档案服务器, 不过它会记住每一次档案的...
Subversion 是一种开放源码的全新版本控制系统,支持可在本地访问或通过网络访问的数据库和文件系统存储库。不但提供了常见 的比较、修补、标记、提交、回复和分支功能性,Subversion 还增加了追踪移动和删除的能力...
CentOS 下 Apache + Subversion 实现版本控制
作为新一代的开源版本控制工具,Subversion 以其目录版本化、原子提交、版本化的元数据、更加有效的分支和标签等优良特性,正逐渐受到开源 软件社区的重视,并有望取代 CVS,成为开源软件开发中版本控制的首选系统。...
subversion svn版本控制 本来想一块打包可恶的20M啊
针对 Subversion 1.4 PDF格式电子书。
Subversion-1.6.5 svn的windows服务器端
Windows下Subversion安装使用 Windows下Subversion安装使用
采用 Subversion进行版本控制 本书是写给那些想用Subversion进行管理数据的计算机使用者。 本书共8章。
Subversion 版本控制系统用户手册