TortoiseSvn问题研究(一)

问题描述

今天在工作中遇到一个SVN方面的问题,牵扯出使用SVN这一段时间的一系列问题。

具体来说,是这样的:

  • 上周五有上线分支,自己的分支需要merge;
  • 很多项目小组都在开发这个项目,再往前好像也有上线;
  • 按照之前merge方法merge之后出现DAO文件找不到错误;
  • 翻看当前主干版本,这些DAO文件都存在;
  • 翻看历史记录,发现这些DAO文件是在两个版本之前上线的。

问题分析

到这里,基本上可以怀疑问题原因了,就是自己merge的方法有问题。

那么,再看下merge的步骤

  • 右键分支,选择merge
  • 默认第一个,下一步;
  • 默认(specific version),选择最新版本;
  • test merge,没有太大问题,merge

那么,再迟钝,也可以发现,问题一定存在于有选项的地方了吧。

也就是说,merge的选择,这里应该选择第一个,merge all versions


问题延伸

其实我能在这个地方犯这么一个错误,也是挺神奇的。

想之前,在进来选择的地方更容易出错

这里之前,包括今天,都没有搞清楚过,查了下,引用记录如下

SVN merge 三种方式
转载

1、Merge a range of revisions

2、Reintegrate a branch

3、Merge two different trees

——————————————————————————————————————————————————————

以下是转载自chunanyong的一篇关于svn分支合并类型的文章,出处:http://chunanyong.iteye.com/blog/697255

合并的工作是把主干或者分支上合并范围内的所有改动列出,并对比当前工作副本的内容,由合并者手工修改冲突,然后提交到服务器的相应目录里。如果当前工作副本是主干,则合并的范围是分支上的改动,如果工作副本是分支的,则合并范围是主干上的改动,并且一定要注意,合并的起始位置URL一定要和当前的工作副本的URL是相同的。

一、合并一个范围的版本
此类型应用最为广泛,主要是把分支中的修改合并到主干上来。在主干上点击右键选择合并,然后选择合并类型:合并一个范围的版本。
合并的源URL填写的是要合并的分支的URL,待合并的版本范围如果为空,则指的是合并分支上所有的版本,即自从分支创建以来到分支当前最新版本的所有演变。如果只是选择其中一个版本,或者几个版本,那么就表示只是将制定的n个版本的变化合并到主干上。如果只是选择其中一个版本,那么表示只是选择那个版本的修改,之前或之后的修改将不被采纳。

二、复兴合并
复兴合并可以理解为是第一种合并类型的一种特例,在复兴合并中,主干可以理解为是自从开创分支之后没有任何修改,而分支是经过修改的,而且合并中分支是没有版本选择的。经过复兴合并,分支中所有的修改都会合并到主干中,合并的结果将使得分支和主干一模一样,从而可以删除分支。

三、合并两个不同的树
此类型与前两种类型不同,第一种类型可以选择分支合并的版本,主干不能选择版本;第二种类型是主干和分支都不能选择合并的版本;而这种类型则是无论是主干还是分支都可以选择合并的版本,即可以选择过去的一个主干版本与分支的某个版本进行合并。合并的时候以选择的分支版本为主,如果选择的主干版本与分支版本有不同的地方,合并时主干部分将被放弃。
起始URL:选择主干目录的URL(应当和当前工作副本的URL一致,这个是所谓的合并点)
结束URL:选择要合并的分支的URL。
起始和结束的版本:一般起始版本应当找到最后一次同步时的版本,如果从没有同步过(第一次合并),则选择创建分支时的版本,结束版本一般是最新版本,如果你不想将某些内容合并进主干的话,也可以选择一个合并点。

其实,如图所示,这个merge,from可以是主干,也可以是branch的。

虽然我没去查官方文档,不过日常是这么用的。。

(不得不吐槽,即使英文还可以,碰上太多专业情况,还是懵逼)

另外,一般而言的SVN是有三个分支的:trunk,branch,tags

之前对tags一直懵懵懂懂,今天稍微看了下

  • tags和branch都是分支;
  • branch倾向于可以修改的分支;
  • tags一般是不能去动的分支,好比打包,或者就是打包;
  • trunk是主干,一般而言不直接做修改,而是通过branch开发后合上去
原文地址:https://www.cnblogs.com/andy1202go/p/7979741.html