一、 Subversion介绍
Subversion 是一个自由/开源的,专门针对CVS的不足而开发的版本控制系统。Subversion是版本管理的后台系统,其核心是保存数据的档案库-repository。档案库用分层的“文件-目录”文件系统数来存储数据。连接到档案库的客户能读写数据。档案库记录了用户的每一次修改!客户端可以从档案库中提取到过去的版本。
体系结构:采用了B/S与C/S相结合的方式。
B/S结构:可以通过浏览器访问仓库。
C/S结构:安装TortoiseSVN后访问仓库。
从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。因为修改不再是单线进行,开发进度会进展迅速。此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量—如果出现不正确的更改,只要撤销那一次更改操作即可。
二、 安装准备工作
要完全安装一个TortoiseSVN版本控制器,我们可能需要分别安装下面几个程序
l 1、subversion 的服务端程序
l 2、TortoiseSVN 或者eclipse的客户端插件
l 3、配置svn服务成window service自动运行的工具
l 4、语言包(可以省略)
三、 安装过程
1.Subversion的安装是一个具有向导的简单安装过程。我们只要根据提示默认安装即可。
2.建立服务器的根版本控制库,运行CMD程序,输入svnadmin create D:\SVNRoot(具体位置可以自己定义)。完成后自动在指定目录创建版本库根目录。
3.安装SVN服务,因为WINDOWS默认是没有的,需要自己安装,把安装准备中提到的SVNService工具解压到SVN安装文件的BIN目录下,在运行命令行中输入:
svnservice -install -d -r D:\SVNRoot
再运行启动SVN服务命令,输入:
net start svnservice
SVN在默认的情况下是不会自动启动的,需要windows自动启动的可以通过以下实现:
右键点击桌面的“我的电脑”,左键选择“管理”,进入windows的计算机管理窗口。选择“服务和应用程序”-“服务”,将SVNSERVER设为自动启动。
4.安装SVN客户端,直接运行TortoiseSVN安装文件,也无须特殊设置,安装完毕后会提示你重启(不重启也可以用)(客户端机器只需要安装TortoiseSVN即可)。
四、 配置SVN服务器认证
4.1 找到配置文件
找到D:\SVNRoot文件下的conf目录,把passwd 和authz两个文件剪切到D:\SVNRoot目录下,然后对svnserver.conf中的passwd和authz进行配置
svnserve.conf
[general]
anon-access = read
auth-access = write
password-db = ../passwd
authz-db = ../authz
含义是:
l 未验证用户无任何权限 (如果把none修改为read就是具有可读权限)
l 已验证用户给予写权限 (当然也能读)
l 密码数据存放到上级目录的passwd文件中
l 授权设置存到上级目录的authz文件中
如果在D:/SVN根目录下建立名为project1的版本库,那么在这里需要把project1的conf目录下的sunserve.conf文件指向根目录下的sunserve.conf文件,加入代码如下:
anon-access = none
auth-access = write
password-db = ../../passwd
authz-db = ../../authz
注:如果要对含有中文的目录或文件进行管理或分配时,需要将该文件保存为UTF-8格式,微软的记事本保存为UTF-8格式无效,所以不要用。可用如UltraEdit或EditPlus等软件完成,保存时,格式应选择UTF-8 NO BOM。
4.2 用户名密码配置
passwd文件打开
[users]
#harry = harryssecret
#sally = sallyssecret
admin=admin999
user=user999
含义是:
l 增加了admin这个用户,密码为admin999
l 增加了user这个用户,密码为user999
4.3 用户组配置
Author文件打开
[groups]
# harry_and_sally = harry,sally
进行用户组的配置
比如:
[groups]
group_admin = admin
group_user = user
含义是将admin加入到组group_admin中,user加入到组group_user中去
4.3 文件权限设置
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
进行文件权限的设置
比如存在版本库根目录下libs这个文件夹,而我只希望admin可以读写,user有读权限,未授权的无法访问,则可以这样写
[/libs]
@g_admin = rw
@g_user= r
* = r
注:*表示匿名用户
4.4其他方式认证
l 路径为基础的授权路径维护繁琐、服务器路径权限检查耗资源
l Windows 域认证 方便用户周期性的密码变更
l SSL数字认证 使服务器更安全
五、 版本库创建
5.1 使用命令行工具创建版本库
l 1.在D:\SVNRoot\里创建另一个目录project1。
l 2.打开命令行窗口(或DOS窗口),进入D:\SVNRoot\目录,输入
svnadmin create --fs-type bdb project(不推荐此类型)
或
svnadmin create --fs-type fsfs project
现在你在D:\ SVNRoot\project创建了一个新的版本库。
注:project1目录非空并且没有写保护,否则不能建立版本库
5.2 使用 TortoiseSVN 创建版本库
未纳入版本控制文件夹的 TortoiseSVN 菜单
1. 打开目录D:\SVNRoot
2. 创建一个新的文件夹,命名为project1
3. 右键点击新创建的目录,选择TortoiseSVN在此创建版本库。
之后就会在新文件夹创建一个版本库,不要手工编辑任何文件,如果创建时得到警告,一定要先确定此目录非空并且没有写保护。
4.
5.3初始化建立版本文件
来到我们想要建立的项目根目录,比如地址D:\WebDemo,右键->TortoiseSVN->Import...
URL of repository输入“svn://localhost/project1”
输入用户名密码确定即可。
完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。
想要查看版本库中的内容,可以右键点击该版本目录project1->TortoiseSVN->Reopo-browser,
窗口如下
当然,建立版本库项目的导入需要先分配好目录,方便日后版本库资源的管理。我们可以先建一个临时库TEMP,临时库中间放如需要导入的工程。推荐工程目录结构如下:
Temp ###临时目录,版本库建立以后可删除。
├─Project1 ###第一个项目目录。
├─Branches ### 推荐建立的分支目录。
├─Tags ### 推荐建立的标签目录。
└─Trunk ### 必须的主分支目录,所有初始版本的项目文件放于该目录下。
└─01Doc ### 下面为你自己的项目目录,根据需要自己创建。
└─02Source
└─03Release
└─…
└yProject2 ###第二个项目目录。
├─Branches
├─Tags
└─Trunk
└─…
└─… ###其他项目目录。
六、 客户端安装使用
6.1 TortoiseSVN 客户端
安装之前,我们需要指定一个文件夹存放版本库的副本。
6.1.1 检出(checkout)
右键->SVN Checkout...
l 版本路径可以选择某个版本库的路径,或者直接输入svn://url直接导入所有最新版本库
l 点击Revision,可以选择版本号选择下载
成功后,文件夹改变图标成
注:checkout会形成工作拷贝,里面有最后的版本等信息,该拷贝处于受控状态,Export(导出)出来的,只是把文件导出来,不带版本信息,不受控
6.1.2 导出(Export)
Export出来的,只是把文件导出来,不带版本信息,不受控。文件夹中没有.svn目录,这样方便诸如源代码打包的操作,省去了需要手工逐个文件夹删除.svn目录的烦恼。
6.1.3 更新(update)
右键->SVN Update...更新所选文件夹或者文件。需要更新的文件图标为
注:如果不想全部更新,可以先选择Check for Modifications看看在本地或在服务器上哪些文件修改过,然后选择更新需要的文件。
6.1.4 提交(commit)
右键->SVN Commit...提交修改过的文件或者文件夹。
注:更改公共修改文件,可以先选择Check for Modifications检查版本仓库文件并且显示出你的工作副本中修改过的每一个文件,没有在版本控制下的文件也会被显示出来,确认副本是最新的并且没有冲突(图标为的文件)之后再提交。
6.1.5 比较(Diff)合并(Merge)
l Diff用比较查看器,它对本地的文件和仓库中最新版本的内容进行详细的对比。
l 合并(Merge)的应用
n 解决冲突
Subversion和CVS等采用拷贝-修改-合并模型。此模型解决了锁定-修改-解锁模型引起的管理、安全、修改串行的问题。项目成员从版本库读取个人的工作副本,所有项目成员并行地在工作副本上工作,然后合并在一起形成新的版本。如果修改不重叠,TortoiseSVN可自动合并。修改重叠则引起冲突。
冲突区域部分被“<<<<<<<”标注,通过沟通修改,合并文件,重新提交。
n 分支(branch)
版本控制的一个重要特性是能将变更隔离成独立的开发线路。分支常用来测试新功能,但又不会因为编译错误或BUG干扰开发主线。一旦分支稳定下来,就可以把分支合并(merge)回主线(the trunk)。
6.2 Eclipse中SVN的安装和使用
Eclipse默认只有CVS而没有集成SVN,所以要想使用SVN做版本控制需要装一个Eclipse插件Subclipse。
6.2.1 安装插件
1. Eclipse菜单中选择更新插件.
2. 寻找新的功能来安装
3. 左侧列表是选择下载站点,右侧选择”New Remote Sote...”如果你是通过代理联网,需要在外部下载一个插件包,点击”New Local Site...” 下载地址http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91。
4. 新站点的信息
填写正确的信息,以便完成插件的更新。
Name: Subclipse 1.2.x (Eclipse 3.2+)
URL: http://subclipse.tigris.org/update_1.2.x
或者
Name: Subclipse 1.0.x (Eclipse 3.0/3.1)
URL: http://subclipse.tigris.org/update_1.0.x
5. 添加完成后你刚加的站点并不会被选中,请确定选中后再操作。
6. 这里显示站点里所有可以更新的功能。
7. 点击接受协议
8. 确认安装位置
9. 功能验证
10. 安装进程
11. 安装完成后Eclipse 需要重启。
12. 最后打开定义版本库Subclipse Repository perspective. 确定锁定在 Team -> SVN.
卸载Subclipse的方法很简单,也是点击 Help => Software Updates => Manage Configuration卸载。
6.2.2 使用Subclipse
先向版本库中加入一个Eclipse工程SVNtest ,将它导入版本库svn://localhost/project1导入后用版本库浏览器找到你导入的工程目录,把其下WebRoot\WEB-INF\classes目录删掉(注意:不删出以后会报错)这些初始化的操作都用客户端工具完成的。然后打开Eclipse编译器,点击编译器右上角的Open Perspective 打开SVN资源库界面,新建一个资源库
选择资源库的位置,这里我们就用刚才搭好的 svn://localhost/project1 作为工程目录,点击Finish后如果成功则会看到版本服务器中工程的树形结构了。在svn://localhost/project1根目录上点右键,选择Check Out,在弹出窗口中选择“作为空间的项目验出”,填写项目名称。
一切没有问题了点击Finish。之后它就会从服务器上把工程下到本地,Eclipse编辑栏会发现刚才下的工程文件都会带有SVN版本控制标记了, Workspace的工程文件夹,并且也有控制标记。在SVN控制下的文件有Team选单,就是客户端工具,提交,更新,同步,合并,切换……
引用自:http://hi.baidu.com/bsndhswd/blog/item/9f033afac78909829e514637.html