上节我们介绍了Svn使用入门中的基础使用,这节我们介绍一下Svn使用入门的高级使用,主要针对有一定Svn使用基础的朋友们,看完本文你肯定有不少收获,希望本文能教会你更多东西,欢迎大家一起来学习Svn使用入门高级篇。
第二部分:高级使用
主要包含如下内容:打版本标记、分支操作
标记和分支可以理解为都是项目的一份拷贝。只不过用途不同。而实际上这两个东西在SVN服务器上是没有区别的。
建立标记、分支:所谓打标记,和CVS里面的Tagasaversion是一个意思。就是整个项目的当前状况拍一个照片,放在某目录,日后方便查看。例如我们可以记住某项目的134版本是这个阶段工作的阶段性成果,而使用标记,我们可以把这个项目的134版本拷贝一份放在某个目录,并命名为project_a_final_20080227。以后任何时候都可以从这个位置方便的找回这个版本。
在Subclipse中,SVN操作选项中有Tag/Branche选项,点击之,第二个地址就是tag的存放地址(分支、标记存放在哪里都有一些一般性的建议,关于版本库的规划请参见另外一份文档《版本库结构规划建议》)。
而在TortoiseSVN中,也有分支/标记这样的选项。操作起来大同小异。
分支的创建和上面的Tag创建是完全一样的,只不过我们一般建议把分支存放于一个叫做branches的目录。
切换分支:假设我们创建了一个分支叫做branchesA。之后开发人员可以工作在主干或者这个分支上,二者之间的切换也很简单,菜单中有一个“切换”选项。点击按提示操作即可。
分支合并:这个是分支开发中最重要的一步。假设BranchesA是为了一个新功能的开发而创建的,那么该功能开发完成后,需要把这个分支合并回到主干上来。这时可以选择SVN操作菜单中的“合并”功能。
Svn使用入门中所谓合并,实际上是比较两个资源的不同,找出差异,并将这个差异应用到本地工作拷贝上。
合并的过程中涉及到的两个资源一般称作起始路径和目标路径。这两个路径的选取是很随意的。举以下几个例子:
起始路径http://domain/svn/project/branches/b1创建分支时的版本(例如130)
目标路径http://domain/svn/project/branches/b1当前最新版本(例如200)
假设本地拷贝该项目的主干版本
合并操作可以表达为:
本地版本+(分支当前版本-分支创建时的版本)=合并后的版本
(我们可以将开发理解成在版本库上的一种增量操作,此时括号中的减法得出的是一个正值,例如“增加了a.txt这个文件”)
合并意义:比较分支b1创建时的样子和现在的样子,找出差异(注意这个差异实际上就是b1分支的开发成果),将这个差异应用到本地工作拷贝。而当前工作拷贝是项目的主干本本,这就意味着把分支b1的开发成果应用到了主干上,经过检查、提交到版本库,最后达到了将分支开发所完成的功能合并到了主干上的目的。下面是Svn使用入门介绍中关于合并的两个实例讲解。
------------------------------------------------------------------------------------------------------------
起始路径:http://domain/svn/project/odps上一次提交给信访项目时的版本120
目标路径:http://domain/svn/project/odps当前版本145
假设本地拷贝:信访项目的当前版本
合并操作表达如下:
项目A当前版本+(框架当前版本-框架上次提交给项目时的版本)=项目A进行了框架升级后的版本
(注意其中的减法结果依然是正值)
Svn使用入门介绍中合并意义:比较上一次把odps框架提交给信访项目使用时的样子和该框架现在的样子,找出差异,应用到本地工作拷贝。而当前工作拷贝是信访项目,这就意味着把ODPS框架这个阶段开发的成果应哟功能到信访项目中,经过检查、提交到版本库,最后达到的目的是把信访项目中的ODPS项目部分进行了升级(ODPS框架和信访项目是由不同的小组开发的,所以这个操作很有意义)。
------------------------------------------------------------------------------------------------------------
起始路径:http://domain/svn/project/trunk当前版本300
目标路径:http://domain/svn/project/trunk某个历史版本250
工作拷贝:http://domain/svn/project/trunk当前版本300,与起始路径相同
注意:这个例子和上面两个例子不同,上面两个例子其实路径在时间上都早于目标路径。
合并操作表达如下:
项目当前版本+(项目历史版本250-项目当前版本)=项目回滚后的版本
注意这一次括号中的减法操作按照上面的规则来讲得出的结果是负的。也就是说,假设我们在开发过程中新增了一个文件a.txt,那么减法(新版本-旧版本)表达的含义是“以当初的版本位处发现,看现在的版本”,得出的结论是新增了一个文件a.txt,而减法(旧版本-新版本),也就是把起始路径和目标路径的时间顺序倒了一下,表达的含义就变成了“站在今天,看过去有什么不同”,得出的结论是少了一个a.txt文件。
合并意义:从现在看过去,整个差异部分“加了一个负号”,经过检查、提交,最后的结果是当前项目恢复到了历史上的250版本。
其它:单一差异文件,补丁
上面的分支合并操作是比较两个资源的不同,将差异应用到本地工作拷贝。在此之外,SVN可以比较两个资源的不同,并将这些不同之处记录在一个独立文件中。而这一个差异文件也就是所谓的补丁。本节关于Svn使用入门介绍完毕,请关注本节其他相关报道。
【编辑推荐】