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_Merge - Fatal编程技术网

Svn 如何仅合并从一个分支到另一个分支的特定非连续更改

Svn 如何仅合并从一个分支到另一个分支的特定非连续更改,svn,merge,Svn,Merge,如何将补丁从一个分支合并/应用到另一个分支。两个分支与另一个分支的合并历史几乎相同。例如: 分支1和分支2从分支X、分支Y、分支Z(父分支)进行了几乎相同的代码合并。但在合并间隔内,分支1中也提交了较大的增量代码更改。该增量是在分支X、分支Y和分支Z的代码基础上提交的。(正如我在IT内部所说,合并德尔塔的公司也已承诺) 现在我只想合并/应用从Branch1到branch2的增量更改 在这种情况下,我认为自动合并不是一个好的选择,因为它会复制更改 这两个分支与相同的父分支相同,但具有不同的合并历史

如何将补丁从一个分支合并/应用到另一个分支。两个分支与另一个分支的合并历史几乎相同。例如: 分支1和分支2从分支X、分支Y、分支Z(父分支)进行了几乎相同的代码合并。但在合并间隔内,分支1中也提交了较大的增量代码更改。该增量是在分支X、分支Y和分支Z的代码基础上提交的。(正如我在IT内部所说,合并德尔塔的公司也已承诺) 现在我只想合并/应用从Branch1到branch2的增量更改

在这种情况下,我认为自动合并不是一个好的选择,因为它会复制更改 这两个分支与相同的父分支相同,但具有不同的合并历史记录。 请建议任何好的方法只应用从branch1到Branch2的增量更改(近2000个文件)。 应用补丁会是一个好的选择吗?我认为自动合并可能会导致重复和不必要的冲突。
谢谢,

听起来,在分支1上的许多提交中,您只希望合并来自一个或两个提交的更改。为此,请使用“樱桃选择”合并,具体指定要合并的版本。比如说,

svn merge -c 1234,4567 http://example.com/svn/branches/branch1

有关详细信息,请参阅和。

如果您使用的是最新版本的SVN(我认为是1.7或更高版本),那么合并跟踪应该足够智能,可以避免合并已正确记录为合并的修订

因为您显然有数千个您想要的提交,而不仅仅是一个或两个,所以最简单的方法就是尝试自动合并。如果合并导致问题,那么您没有丢失任何东西;你可以随时回复

在最坏的情况下,我敢打赌,任何冲突都可以使用良好的三向差异工具(如KDiff3或Meld)轻松解决,因为大多数冲突更改都已经应用于目标分支


请注意,如果一个完整的自动合并出现困难,您可以尝试将合并分解为更小、更易于管理的块。首先合并前100-200个连续修订,然后合并下一个100-200,依此类推,直到合并所有修订。有了更多的小片段,自动合并算法有时会更容易,任何手动冲突解决肯定会更容易。

是的,我知道这一点。。。但是这里有大约1000个非连续的rev#,并且不可能使用樱桃采摘。这里的任何其他解决方法都将不胜感激!如果我再次从分支1合并到分支2,这将是一件好事。它包含大约60%左右的代码,两边都是相同的。这种双重性会不会产生任何问题。至少在版本1.8中,龟甲VN有一个功能,可以隐藏已经合并的修订。我仍然不是100%清楚这个功能什么时候可用,但它可能会帮助您在为樱桃选择修订时快速选择所有需要的修订。但我误解了你的问题,可能会先尝试自动合并。对于延迟回复,请注意,如果我在自动合并命令中使用--ignore estority和--ignore whitespace,请输入内容。使用这些选项有什么害处吗?为什么要使用--ignore estority?如果我理解正确的话,该选项的重点是当两个分支实际上不共享任何历史时。如果他们真的分享了历史,那可能只会让事情变得更复杂--忽略空白可能不会对合并难度产生太大影响,除非它使合并更容易。不管是哪种方式,将合并分解成更小的块应该会更容易。