SVN使用指南
1 引言
在版本管理方面应用较为广泛的版本管理软件主要有SVN(CVS)和VSS两类。其中SVN与CVS是Unix/Linux平台上广泛使用的版本管理软件, VSS则是Microsoft推出的版本管理器。
CVS是开放源代码软件,由于其简单易用、功能强大、跨平台支持,在全球中小型软件企业中得到了广泛使用。其最大的问题就是缺少相应的技术支持,许多问题的解决需要自已寻资料,甚至是读源代码。CVS是一个典型Server/Client端软件,优点是CVS支持远程管理,项目组分布开发时用CVS。
SVN是CVS 的主要作者在CVS基础上进行开发的,用以替代CVS。SVN的设计目的就是针对CVS的一些弱点进行改进。SVN目前发布了1.6正式版,已经相当稳定可靠了。
VSS是微软的产品。简单好用,局域网中用VSS。用于Team级还可以,对于企业级就有些勉强了,另外,VSS仅支持Windows 平台。
2 版本管理工具的对比
2.1 支持重命名
为了得到更好的代码,开发中需要经常进行重构,重构就经常涉及到文件的重构名,重命名对Java开发来说非常重要,SVN支持重命名。而重命名中VSS中是不被支持的。repository文件夹可以删除吗
2.2锁定文件
锁定文件会导致重构不方便,另一方面,VSS不能离线开发,而SVN则不同,员工可以带回家或出差时继续开发,回来后提交就行了。
2.3 多平台支持
SVN支持多个平台下的操作;VSS仅支持Windows平台。
2.4 外围工具的集成
SVN有多种用于服务器端的外围工具,满足多种需要。如果有需要,也可以自己写插件或管理脚本,开放的架构,允许我们这样做。而VSS不具备这些优势。
2.5 客户端的易用性
SVN客户端TortoiseSVN比VSS客户端更方便用户使用。
SVN配套的Tortoise SVN直接挂在了explorer的右键菜单功能上,方便用户操作,在每次刷新或者更改文件、目录等都会自动与SVN server比较,哪些目录下文件有更新一目了然,文件夹上面的惊叹号提醒用户Update,获得最新的修订版。而VSS采用手工同步的方式操作麻烦。
SVN本地拷贝可以随时变更,不会被设定成只读,只在提交版本的时候才进行版本更新,SVN采用的是“拷贝-修改-合并”模型;而VSS把没有checkout的文件设定成只读,VSS使用的是“锁定-修改-解锁”模型。这对用户来说是两种完全不同的工作方式。
3 日常开发中的SVN操作
3.1 版本号的解释
SVN系统中的版本号准确应该叫做“修订版本号”,每当版本库接受了一个提交Commit,文件系统进入了一个新的状态,叫做一次修订(revision),每一个修订版本被赋予一个独一无二的、递增的自然数,这个自然数就是修订版本号。
受控项目中任何一个受控文件/文件夹进行了修改提交Commit操作,项目的版本号就会提升一次,没有进行修改的文件/文件夹其版本号不会发生变化。受控项目每一个装态都包含项目的所有文件/文件夹,引起该次版本号增加的即修改了的文件/文件夹保存新副本,没有发生修改的文件/文件夹保存引用,因此项目中的文件/文件夹可能与项目的版本号不同。
3.2 更新(Update)工作副本
把他人做的修改融合到自己的本地副本当中,这个把改动从服务器拿到本地的过程就是“更新Update”。“更新Update”操作可以针对一个文件,或几个被选择的文件,或某个文件夹中的所有文件。选择想要进行“更新Update”操作的文件和(或)文件夹,单击鼠标右键,在菜单中选择“更新Update”, 执行窗口显示正在“更新Update”的进度。他人做的修改会合并到自己的文件中,而自己所做的修改会被保留。如果不能合并,将会出现冲突(红文字显示),冲突的文件图标将出现标志。
命令 “更新至版本Update ” 可以使[本地工作区]更新到自己选择的一个特定版本。
3.3 解决冲突
选择的文件,点击鼠标右键菜单中选择“编辑冲突Edit Conflict”来打开合并工具或冲突编辑器,做一些必要的修改,然后保存文件。然后选择菜单中的“已解决的Resolved”命令执行,接着提交commit修改到仓库。
注意:命令“已解决的Resolved”并没有真正的解决冲突,它只不过是把“文件名称.扩展名.mine” 和 “文件名称.扩展名.r*”(r*中星号代表任意位数字,即版本号)删除,并允许你提交修改而已。因此,建议在有冲突发生时要先执行“编辑冲突Edit Conflict” 再执行“已解决的Resolved”;如果确信自己的修改是正确的,不需要保留他人的修改,可将文件名称.扩展名.mine去掉“.mine”后缀,并把“.r*”后缀的文件和“”的文件删除,然后正常“提交Commit”,版本库中将保存自己的版本。
3.4 提交修改到仓库
强烈建议在提交之前,应该确认[本地工作区] 是最新的。可以直接作一次“更新Update”操作,或者先“检查更新Check for Modifications”看看在本地或在服务器上哪些文件修改过。如果没有这样的操作直接提交的话,很有可能出现冲突现象。“检查更新Check for Modifications”操作后的结果界面如下:
如果[本地工作区] 是最新的,并且没有冲突,就可以提交你的修改了。选中你想要提交的任
意文件或文件夹,然后选择在菜单中选择“提交Commit…”在提交对话框中双击一个有修改的文件,可以启动外挂的比较工具来显示修改细节。 在按下“确定OK”按钮之后,会显示提交的进程情况。
3.5 比较差异(Diff)
[本地工作区] 修改后,被修改的文件出现标志,选择 “比较差异Diff” 命令,可以查看该文件与版本仓库中文件具体差异,选择命令后出现对应的差异察看窗口。
3.6 加入(Add)新文件/新文件夹
想把在开发过程中创建的新文件/文件夹加入到SVN控制之下,可以这样做:选中文件/文件夹(在新文件/文件夹所在父文件夹点击右键),然后在菜单中选择“添加Add”命令。不需要受SVN控制的文件请取消钩选。
在把文件或文件夹加入到控制之下后,这些文件或文件夹就会显示为一个Added覆盖图标的样子,接下来必须对[本地工作区] 执行提交commit操作,以便其他团队成员能够看到这些文件或文件夹。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论