代码之家  ›  专栏  ›  技术社区  ›  eSPiYa

如何将某个修订版中的更改复制/重新应用到工作/头部修订版中?

svn
  •  2
  • eSPiYa  · 技术社区  · 8 年前

    我们正在做一个项目,突然有个不合作/固执的家伙进来,检查了一些把项目搞砸了的东西——使它无法构建,但对我的模块没有影响。因此,我们仍然在使用最后一个已知的工作修订版,我像正常一样检查了我的更改。然后,项目经理决定将所有内容恢复到已知的最新工作版本(r1810),并将其更改为r1824。

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

    我大部分时间都在Windows explorer上使用Tortoise SVN,在Visual Studio上使用AnkhSVN,所以我可以说,在使用SVN时,我还是一个使用命令提示符的新手。

    1 回复  |  直到 8 年前
        1
  •  5
  •   kostix    8 年前

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

    引用 the manual :

    <&燃气轮机;术语樱桃采摘。这个词指的是选择的行为 一个分支中的一个特定变更集,并将其复制到另一个分支。 樱桃采摘也可能是指复制某一特定品种的行为 集合(不一定连续!)从一个分支到的变更集 另一个这与更典型的合并场景形成对比,其中 将自动复制下一个连续的修订范围。

    要进行樱桃采摘,请使用 svn merge -c 1814 ^whatever/branch ; 再次引用 the manual :

    --change (-c) ARG

    使用特定更改执行请求的操作。 一般来说,这个选项是 -r ARG-1:ARG . 某些子命令允许使用逗号分隔的修订列表 数字参数(例如。, -c ARG1,ARG2,ARG3 ). 或者,您可以 提供两个用破折号分隔的参数(如 -c ARG1-ARG2 )至 确定修订范围 ARG1 和 ARG2 包含全部费用 最后,如果revision参数被否定,则隐含的修订 范围反转: -c -45 相当于 -r 45:44 .

    更新: 正如OP所建议的,他们需要使用 --ignore-ancestry 命令行选项 svn merge -c 因为他们是 使用单个分支进行开发。