分支的合并类型
合并的工作是把主干或者分支上合并范围内的所有改动列出,并对比当前工作副本的内容,由合并者手工修改冲突,然后提交到服务器的相应目录里。如果当前工作副本是主干,则合并的范围是分支上的改动,如果工作副本是分支的,则合并范围是主干上的改动,并且一定要注意,合并的起始位置URL一定要和当前的工作副本的URL是相同的。
一、合并一个范围的版本
此类型应用最为广泛,主要是把分支中的修改合并到主干上来。在主干上点击右键选择合并,然后选择合并类型:合并一个范围的版本。合并的源URL填写的是要合并的分支的URL,待合并的版本范围如果为空,则指的是合并分支上所有的版本,即自从分支创建以来到分支当前最新版本的所有演变。如果只是选择其中一个版本,或者几个版本,那么就表示只是将制定的n个版本的变化合并到主干上。如果只是选择其中一个版本,那么表示只是选择那个版本的修改,之前或之后的修改将不被采纳。
二、复兴合并
复兴合并可以理解为是第一种合并类型的一种特例,在复兴合并中,主干可以理解为是自从开创分支之后没有任何修改,而分支是经过修改的,而且合并中分支是没有版本选择的。经过复兴合并,分支中所有的修改都会合并到主干中,合并的结果将使得分支和主干一模一样,从而可以删除分支。
三、合并两个不同的树
此类型与前两种类型不同,第一种类型可以选择分支合并的版本,主干不能选择版本;第二种类型是主干和分支都不能选择合并的版本;而这种类型则是无论是主干还是分支都可以选择合并的版本,即可以选择过去的一个主干版本与分支的某个版本进行合并。合并的时候以选择的分支版本为主,如果选择的主干版本与分支版本有不同的地方,合并时主干部分将被放弃。
起始URL:选择主干目录的URL(应当和当前工作副本的URL一致,这个是所谓的合并点)
结束URL:选择要合并的分支的URL。
起始和结束的版本:一般起始版本应当找到最后一次同步时的版本,如果从没有同步过(第一次合并),则选择创建分支时的版本,结束版本一般是最新版本,如果你不想将某些内容合并进主干的话,也可以选择一个合并点。
实例:
主干A在95版本的时候创建分支B,此时两棵树都是95版本
1、 我在分支B上增加文件test.txt,提交。此时版本库升级到了96版本;
2、 我在A上选择合并类型1,合并分支最新版本,结果是把test.txt加入A;
3、 我在A上选择合并类型2,合并分支最新版本,结果同上;
4、 我在A上选择合并类型3,合并分支最新版本,结果同上;
5、 我在A上增加文件test2.txt,提交,此时版本库升级到了97版本;
6、 我在A上选择合并类型1,合并分支最新版本,结果是把test.txt加入A;
7、 我在A上选择合并类型2,合并分支最新版本,结果是把test.txt加入A;
8、 我在A上选择合并类型3,主干选择当前97版本,合并分支最新版本,结果是把test.txt加入A,把test2.txt从A删除;
9、 我在A上选择合并类型3,主干97以前的版本,合并分支最新版本,结果是把test.txt加入A,而A中保留着test2.txt。
将分支合并到主干上,首先需要在主干的工作副本下进行,合并的范围是从主干的上次合并的版本开始到分支上最新的版本结束,如果是第一次合并,则从主干创建分支的版本开始,所以每次合并要做好说明,在日志中体现,不然忘记了下次再合并就有点麻烦。其实,应当尽量避免一个分支合并多次,分支的作用一般为了解决bug,一旦bug对应结束了,分支的使命就结束了,以后再出现其他的问题,应当重新建立分支,这样就不会出现多次合并的问题了。
分支的合并深度
合并深度:
一、工作副本:即你当前的工作目录,一般默认为这个选项;
二、全递归:即你选择的目录的版本库,包括了其下面的子文件,子文件夹,包括子文件夹里面的内容;
三、直接子节点,包括文件夹:即你选择的目录下面的文件,文件夹,但是不包括文件夹里面的子文件,子文件夹;
四、仅文件子节点:即你选择的目录下面的文件,但不包括文件夹,当然不包括的文件夹下面的所有内容也都不纳入合并范围;
五、仅此项:没有任何合并内容。
实例:
1、主干test文件夹下面有text.txt文件,把test文件夹创建分支test2
2、在test2文件夹下面增加test21文件夹,在test21文件夹下面增加文件夹test211,在test211文件夹下面增加文件test211.txt;修改test2文件夹下面的文件test.txt,增加文件test2.txt。提交
3、右键test文件夹合并test2文件夹,选择工作副本。则test文件夹中原先的test.txt文件则显示修改状态,test2.txt文件显示新增状态,文件夹test21和test211以及里面的test211.txt文件都显示为新增状态。选择将test文件夹svn还原,则新增状态下的文件夹或者文件显示为无版本控制状态,原先的test.txt还原为常规常态。
4、右键test文件夹合并test2文件夹,选择全递归,结果和3一样。但是我们之前的test文件夹和仓库上的test的内容是一致的,如果不一致,那么选全递归,是已仓库版本为标准。选工作副本,顾名思义,则以你本地的工作副本文件为主,分支上有而工作副本中没有的文件夹或文件则不进行比较合并。
5、右键test文件夹合并test2文件夹,选择直接子节点,包含文件夹。则test文件夹中原先的test.txt文件显示为修改状态,test2.txt文件显示为新增状态,test21文件夹显示为新增状态,但是其里面内容则为空,那么就证明了分支中test21文件夹以下的内容并没有合并到主干test中来,合并行为只是选取了当前目录。选择将test文件夹svn还原,则新增状态下的文件夹或者文件显示为无版本控制状态,原先的test.txt还原为常规状态。
6、右键test文件夹合并test2文件夹,选择仅文件子节点。则test文件夹中原先的test.txt文件显示为修改状态,test2.txt文件显示为新增状态,分支test2中的test21文件夹没有合并到test中来。选择将test文件夹svn还原,则新增状态下的文件显示为无版本控制状态,原先的test.txt还原为常规状态。
7、右键test文件夹合并test2文件夹,选择仅此项。则test文件夹显示为修改状态,但是内容没有任何改动。将test文件夹svn还原,则该文件夹显示为常规状态。
只记录合并(阻止这些版本将来被合并)
选择此项意味着并没有实际的合并动作,只是在将来的合并过程中,svn将过滤掉此版本的修改动作。例如,我在合并的过程中,选择对分支的23版本只记录合并(阻止这个版本将来被合并),那么23版本并不会合并到主干中。在以后的合并中,如果选择合并分支的22到24版本,那么23版本将被忽略,我们也可以看到,在选择版本的对话框上,23版本的字体是灰色的。所以要慎重使用这个选项,一旦使用了,那么表示这个版本在以后的合并中就不能再使用了。
忽略祖先:如果在分支上有一个文件曾经被删除过,后来又加了一个同文件名的文件,那么在merge的时候svn会识别到这两个文件不是同一个祖先而直接覆盖旧文件增加新文件。而实际上我是要对这两个不同祖先的文件进行合并的,这个时候就需要使用svn merge --ignore-ancestry 忽略祖先来进行合并才能保证正确。
实例:
1、 将主干test创建分支test1;
2、 将test1文件夹下的test.txt文件删除,提交;
3、 在test1下创建文件test.txt,提交;
4、 将test1合并到主干test,如果默认选择,则提示将test1中的test.txt文件替换test文件夹中的test.txt文件;如果选择了忽略祖先,那么系统将把两个test.txt作比较,必要时提示冲突。
carriage return是一个符号(指回车符号CR),而一般在代码文件或文体文件里(WINDOWS下)里换行是CR和LF(即\r\n或十六进制码0D 0A),而你行中只有CR,所以将要加一个LF(即OA)。说得很明确了,其实LF就是line feed的简写。whitespace包括line feeds, tabs, spaces, and carriage returns。
分享到:
相关推荐
### SVN分支管理多版本知识点详解 #### 一、引言 在软件开发过程中,随着项目的迭代更新,如何高效地管理不同版本之间的代码成为了项目管理中的一个重要环节。Subversion(简称SVN)作为一款广泛使用的版本控制...
《SVN分支及合并使用详解》 版本控制系统Subversion(SVN)是软件开发中不可或缺的工具,尤其在团队协作中,分支与合并是其核心功能。本文将深入解析SVN的分支创建、管理和合并过程,帮助开发者更好地理解和运用这...
通过理解和熟练运用这些SVN分支管理技术,团队可以更高效、更有序地进行并行开发,降低代码冲突,提高软件质量。有效的分支管理是大型项目和敏捷开发中的基石,能够促进团队协作,减少混乱,提升开发效率。
**svn合并** `svn merge`是Subversion(简称svn)中的关键...通过学习这些知识点,你可以更有效地管理版本控制,提高团队的生产力,减少因合并和冲突带来的困扰。务必实践操作,结合文档中的图解,以加深理解和记忆。
在这个标题和描述中,我们聚焦的是“黑马”培训机构提供的关于“svn”的版本控制工具的学习资源。svn,全称Subversion,是一个广泛使用的开源版本控制系统,用于管理文件和目录在不同时间的变更。通过使用svn,用户...
### SVN版本管理教程知识点概述 #### 一、版本管理的重要性及SVN的作用 - **版本管理**:在软件开发过程中,随着项目的进展,代码库会出现多个版本,这要求开发团队能够有效地管理和追踪这些版本的变化。良好的...
### SVN版本管理教程知识点概述 #### 一、SVN简介 - **定义**: SVN (Subversion) 是一种广泛使用的版本控制系统,它作为一种替代CVS (Concurrent Versions System) 的工具出现,旨在解决CVS存在的一些问题,提供更...
SVN(Subversion)是Apache软件基金会开发的一款版本控制系统,用于管理文件和目录的历史记录,支持分支合并等操作,广泛应用于软件开发团队的协作环境。本文将详细介绍SVN 1.8版本及其汉化包的相关知识。 1. SVN ...
以下是关于SVN版本控制系统的详细知识: 1. **版本控制系统**:SVN的核心功能是管理文件和目录的不同版本,使得在多人协作的环境中,可以跟踪每个成员的改动,并能够合并冲突,保持项目的一致性。 2. **集中式模型...
SVN(Subversion)是一种版本控制系统,它用于管理和追踪计算机文件的历史变更。SVN允许多个用户协作开发同...无论你是初次接触版本控制的新手,还是需要对SVN基础知识进行巩固的进阶用户,SVN都是一个不可多得的工具。
对于大型项目和需要频繁分支合并的团队,Git可能是更好的选择。而对于小型项目或者更倾向于集中式管理的团队,SVN则可能更适合。 总之,掌握Git和SVN的基本操作对于任何IT从业者来说都是非常有价值的技能,无论你是...
完成后再通过`svn merge`命令将分支上的更改合并回主分支。 三、SVN开发技巧 1. **良好的提交习惯**:每次提交应该是一组有意义的改动,提交信息应清晰描述这次更新的目的。 2. **冲突解决**:遇到冲突时,要仔细...
- **Merge(合并)**:处理多分支的冲突,将不同分支的更改合并到一起。 - **Revert(还原)**:撤销本地的更改,恢复到上次提交的状态。 - **Branch(分支)**和**Tag(标签)**:用于支持灵活的开发策略,分支...
9. **分支与标记**:svn支持创建分支和标记,分支用于隔离开发,标记用于保存特定版本,方便回溯。 10. **日志查看**:通过svn,可以查看文件或目录的历史版本,包括谁何时做了什么修改,这对于追踪代码变更和问题...
本文将详细介绍SVN插件在Eclipse中的应用及其相关知识点。 一、SVN插件的安装与配置 1. Eclipse Marketplace:在Eclipse中,可以通过内置的Marketplace搜索并安装SVN插件,比如Subversive或Subclipse。 2. Update ...
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪...通过阅读“SVN版本控制使用心得”这篇文档,你将能够深入理解SVN的工作原理,掌握其基本操作,并了解如何在实践中应用这些知识来优化你的开发流程。
以下是对SVN不同版本的一些关键知识点的详细说明: 1. 版本控制:SVN的核心功能是版本控制,它允许团队成员协同工作,同时跟踪每个文件的修改历史。每个版本都代表项目在特定时间的状态,使得回溯到早期版本或合并...
对于学习版本控制系统的历史和发展背景,了解不同操作系统的安装和配置也是很有帮助的。 总结来说,版本控制作为软件开发过程中的核心工具,具有记录、追踪、比较和合并代码变更的能力,极大地促进了团队协作和项目...
4. 使用SVN操作:在Eclipse中,你可以直接对项目执行SVN操作,如"Add to Version Control"(将新文件或目录添加到版本控制)、"Commit"(提交更改到仓库)、"Update"(从仓库获取最新更改)和"Merge"(合并他人的...