如何将更改从特定修订复制/重新应用到工作/头修订?

时间:2017-12-27 06:31:08

标签: svn

我们正在研究一个项目,然后突然有一些不合作/顽固的家伙进入并检查了搞乱项目的东西 - 使其不可构建但对我的模块没有影响。所以我们在使用上一个已知的工作版本时仍然在工作,我检查了我的更改,就像正常一样。然后项目经理决定将所有内容恢复到最后一个已知的工作版本(r1810),它变成了r1824。

现在,如何重新应用1814年,1815年和1821年的修订版?

我大部分时间都在Windows资源管理器上使用Tortoise SVN,在Visual Studio上使用AnkhSVN,所以我可以说在使用SVN时我仍然是使用命令提示符的新手。

1 个答案:

答案 0 :(得分:4)

你需要“挑选”这些变化。

引用the manual

  

< ...>樱桃这个术语。这个词指的是选择的行为   来自分支的一个特定变更集并将其复制到另一个分支。   Cherrypicking也可以指复制特定的行为   从一个分支到(不一定是连续的!)变更集的集合   另一个。这与更典型的合并方案形成对比,其中   “下一个”连续修订版本会自动复制。

要挑选,请使用svn merge -c 1814 ^whatever/branch; 再次,引用the manual

  

--change (-c) ARG

     

使用特定的“更改”执行请求的操作。   一般来说,这个选项是-r ARG-1:ARG的语法糖。   某些子命令允许以逗号分隔的修订列表   数字参数(例如,-c ARG1,ARG2,ARG3)。或者,你可以   提供两个用短划线分隔的参数(如-c ARG1-ARG2中所示)   确定ARG1ARG2之间的修订范围。   最后,如果修订参数被否定,则隐含修订   范围相反:-c -45相当于-r 45:44

更新:由于OP的消化,他们需要使用 --ignore-ancestry的{​​{1}}命令行选项,因为它们是svn merge -c 使用单一分支进行开发。