`
56553655
  • 浏览: 202952 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

对svn分支合并类型和深度的理解

阅读更多

文章摘要:分支的合并类型 合并的工作是把主干或者分支上合并范围内的所有改动列出,并对比当前工作副本的内容,由合并者手工修改冲突,然后提交到服务器的相应目录里。如果当前工作副本是主干,则合并的范围是分支上的改动,如果工作副本是分支的,则合并范围是主干上的改动,并且一定要注意,合并的起始位置URL一定要和当前的工作
本文来自[Svn中文网]转发请保留本站地址:http://www.svn8.com/svnsy/20100130/19777.html

分支的合并类型
合并的工作是把主干或者分支上合并范围内的所有改动列出,并对比当前工作副本的内容,由合并者手工修改冲突,然后提交到服务器的相应目录里。如果当前工作副本是主干,则合并的范围是分支上的改动,如果工作副本是分支的,则合并范围是主干上的改动,并且一定要注意,合并的起始位置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中文网]转发请保留本站地址:http://www.svn8.com/svnsy/20100130/19777.html

分享到:
评论

相关推荐

    SVN 的 VS 插件

    5. **分支与合并**:AnkhSVN支持创建、切换和合并分支,这对于敏捷开发和持续集成至关重要。开发者可以在不同的分支上独立工作,然后将改动合并到主分支。 6. **权限管理**:AnkhSVN可以查看和编辑SVN服务器上的...

    svn服务器端+客户端+eclipse插件

    - 分支和合并:SVN支持分支和合并,允许开发人员在独立的分支上工作,然后将改动合并回主分支,这对于迭代开发和并行开发至关重要。 - 权限管理:VisualSVN Server 提供了精细的用户和组权限控制,确保只有授权的...

    SVN安装包和汉化包

    2. **分支和合并**:支持创建分支进行独立开发,然后将分支的更改合并回主分支,这对于协同开发尤其重要。 3. **冲突解决**:当多个用户对同一文件进行修改时,SVN会识别并标记冲突,需要用户手动解决。 4. **权限...

    mac 系统svn三合一(含versions, smart svn, cornerstone)

    无论你是需要一个简洁易用的工具(如Versions),还是需要一个功能全面的专业级客户端(如Smart SVN),或是寻求深度集成和高效工作的解决方案(如Cornerstone),这些工具都能满足你的需求。在日常开发中,熟练掌握...

    VS2012~VS2015的SVN插件、和VS2017 SVN插件 AnkhSVN2017

    总的来说,AnkhSVN是Visual Studio与Subversion协作开发的重要工具,通过其丰富的功能和与IDE的深度融合,提升了开发团队的效率和协同能力。无论是在VS2012、VS2013、VS2015还是VS2017环境下,AnkhSVN都能提供一致且...

    AnkhSVN2019.zip

    - **分支和标签**:创建、切换和管理SVN分支,以及创建标签。 - **差异和合并**:比较文件的不同版本,合并不同分支的更改。 - **工作拷贝管理**:添加、删除、重命名文件或目录。 - **搜索和替换**:在版本历史...

    SVN服务端和客户端的安装包

    TortoiseSVN以其与Windows资源管理器的深度集成而受到喜爱,SmartSVN则提供更全面的功能和专业级的支持。 2. 安装客户端:下载对应操作系统的安装包,按照提示完成安装。 3. 检出(Checkout):从服务器获取最新...

    SVN 1.7.1 中文版

    另外,"TortoiseSVN-1.7.1-zh_CN.pdf" 文件是 SVN 1.7.1 中文版的使用手册,详细介绍了 SVN 的各项功能和操作方法,包括如何设置仓库、创建分支、合并代码、解决冲突等。这个文档对于初学者来说极其宝贵,可以作为...

    SVN简单使用手册

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理文件和目录的历史版本,便于团队协作和项目管理。...同时,理解并熟练应用SVN的分支和合并功能,可以极大提高团队的开发效率和代码质量。

    VS2019 SVN插件,完美支持2019.rar

    7. **分支和标签支持**:方便地创建、切换和合并分支,管理项目版本。 8. **预览和撤销功能**:在提交前预览更改,如果必要,可以撤销未提交的修改。 安装VS2019 SVN插件,完美支持2019.vsix文件,意味着用户可以...

    svn win7 64位客户端

    此外,还有"SVN Revert"用于撤销本地更改,"SVN Merge"用于合并不同分支的改动,以及"SVN Diff"用于查看文件差异等。 在实际开发中,TortoiseSVN的图形单元测试工具(如"Annotate"或"Blame")可以帮助开发者追溯...

    AnkhSvn-2.6.12735最新安装包

    总的来说,AnkhSvn 2.6.12735是Visual Studio开发团队的一个强大工具,通过其与Visual Studio的深度集成,使得日常的版本控制工作变得更加简单和高效。无论是初学者还是经验丰富的开发者,都能从中受益,提高团队...

    visual svn 4.0

    1. **版本控制**:Visual SVN提供了完整的Subversion版本控制功能,包括添加、删除、重命名、移动文件和目录,以及对文件进行比较、合并和恢复操作。这些操作在Visual Studio IDE内即可完成,无需切换到其他工具。 ...

    SVN1.7.11中文版

    1. **分支和合并**:SVN支持创建分支,允许开发人员在不影响主分支的情况下进行独立开发。在完成工作后,可以将分支的更改合并回主分支。 2. **版本历史**:用户可以查看文件和目录的完整变更历史,包括每个版本的...

    SVN插件1.8版本,MyEclipse和Eclipse都可使用

    4. **更强的分支和合并策略**:引入了新的合并模型,使得分支和合并操作更加灵活和智能。 5. **增强的客户端缓存**:减少了网络I/O,提高了本地操作速度。 6. **命令行工具升级**:提供了更多选项和改进,使得...

    vss的svn插件 最新版本

    1. **VSS(Visual SourceSafe)**:VSS是微软为小型团队设计的版本控制工具,它提供了基本的版本控制功能,如版本历史记录、分支和合并等。然而,随着软件开发规模的扩大,VSS的一些局限性逐渐暴露,如性能问题、...

    SVN server 和 Tortise SVN

    其中包括对Windows活动目录(Active Directory)的深度集成,使得权限管理和用户认证变得更加简单。此外,该版本可能也优化了备份和恢复功能,以确保数据的安全性。可能还包含了对高性能和高可用性的改进,比如支持...

    virtual svn client 6.0.4

    1. 图形化界面:提供直观的GUI界面,使SVN命令更易于理解和执行。 2. 集成源代码编辑器:与Visual Studio的代码编辑器无缝集成,可直接在代码中查看和解决冲突。 3. 智能提示:在提交时检查未保存的更改,防止丢失...

    VC集成开发环境SVN插件

    2. **可视化操作**:对初学者友好,所有SVN操作都有图形化界面,易于理解和操作。 3. **版本兼容性**:确保与不同版本的Visual Studio和SVN服务器兼容。 4. **及时反馈**:实时显示文件的状态(如修改、添加、删除...

    svn1.9.7 64位 免安装

    【标题】"svn1.9.7 64位 免安装" 描述了这是一个针对64位操作系统的Subversion(通常简称svn)版本1.9.7的免安装包,特别提到了“小乌龟”(TortoiseSVN),这是一款与Windows操作系统深度集成的图形化SVN客户端。...

Global site tag (gtag.js) - Google Analytics