Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVN:分行发行_Svn_Version Control_Merge_Branch - Fatal编程技术网

SVN:分行发行

SVN:分行发行,svn,version-control,merge,branch,Svn,Version Control,Merge,Branch,我刚开始和SVN合作。 我只为自己创建了一个dev分支,这样在将更改合并到主干之前,我可以做任何我想做的事情 不幸的是,当我不得不合并时,这是一场噩梦。 我的树是这样的: trunk : A-B \ dev : C-D-E 我只是想把我的零钱放回行李箱。 在E。 但当我合并时,我无法再编译了。 我有一些我无法理解的冲突: 有些函数添加了它们的主体,但参数列表仍然是旧的。 例如: void func(int paramA) // from rev B {

我刚开始和SVN合作。 我只为自己创建了一个dev分支,这样在将更改合并到主干之前,我可以做任何我想做的事情

不幸的是,当我不得不合并时,这是一场噩梦。 我的树是这样的:

trunk : A-B
           \
dev   :     C-D-E
我只是想把我的零钱放回行李箱。 在E。 但当我合并时,我无法再编译了。 我有一些我无法理解的冲突:

有些函数添加了它们的主体,但参数列表仍然是旧的。 例如:

void func(int paramA) // from rev B
{
   paramB++; // from rev E and causing compilation error
}
添加了一些新文件,但没有添加其他文件。SVN抱怨说,由于主干中不存在这些文件,所以它们之间存在冲突。但我不明白有些文件是如何创建的,而另一些则不能。 我已经尝试了很多不同的选择与乌龟SVN我恢复了十几次。 我也读过很多关于SVN分支的文章。但我找不到解决我这个简单问题的办法。而且大多数答案都已经超过5年了

我习惯于使用Git进行分支。一切似乎都合乎逻辑。但是现在有了SVN,我完全迷路了! 有人能给我一些建议吗。 我的意思是关于分支机构的日常使用,而不是整个项目的分支机构策略。 我只是在寻找建议,以避免合并冲突的痛苦时,他们不应该发生

非常感谢您的帮助!
谢谢:

对于您的第一期,B中的参数行显然已修改。如果您没有在分支上修改该行,SVN将不会将其视为冲突。顺便说一下,Git也看不到这一点

通常这是件好事。如果主干上发生了更改,但分支中没有更改,通常您希望合并将主干上发生的内容与分支上发生的内容合并。但在您的例子中,主干上的更改与您的分支之间存在语义冲突,而不是行文本冲突。您将始终需要手动解决此类语义冲突;我听说过的每个版本控制系统都使用基于行的文本差异,无法自动检测或解决此类冲突

如果您也修改了分支上的该行,svn应该将该文件标记为冲突。当您解决该冲突时,例如,通过双击TortoiseSVN的“检查修改”对话框中的冲突状态,您可以选择需要哪一版本的行,或者手动修改该行

对于第二个问题,在分支上引入的、主干上不存在的新文件应该总是在没有冲突的情况下添加。但是,如果文件以前存在于主干上,并且在您启动分支后某个时候被删除,则会出现树冲突。如果有人在主干上添加了与新分支文件同名的文件,或者您对某人从主干中删除的文件进行了更改,您也会遇到树冲突


处理树冲突是痛苦的;我不是100岁℅ 清除这些内容,但我认为您只需要将其标记为已解决,然后svn使用完整的文件URL将您想要的文件复制到位。

在我的描述中不明显,但我也更改了分支中的参数行。这就是为什么我不能理解为什么合并期间参数行没有更新。关于新文件,我可能有一个与我过去删除的文件同名的文件。但是,由于它在分支上很有用,我不明白为什么SVN在合并时会抱怨它。最后,我几乎完成了您所说的:我将主干合并到分支中,然后手动将整个项目目录复制回主干中!但我希望有更清晰的东西:不,我只是想复制在合并时表示树冲突的特定文件。对于参数行,您应该看到svn表示文件有冲突,并允许您提出一个diff来解决它。您需要告诉svn使用哪一版本的产品线,svn不知道您的版本取代了rev B中的版本,因为B也改变了它。我有一个不同的窗口,但有其他冲突。这次不行。这就是我在合并过程中迷路的原因。好像SVN用一种糟糕的方式解决了这个问题。我的一个隐晦的问题是,我是否误解了什么?。你的回答告诉我,我对合并的期望是正确的。我可能做错了什么。但是SVN没能帮上忙!谢谢你的帮助!