svn - cherrypick svn merge branch to trunk,随后与 --reintegrate 合并?

标签 svn branching-and-merging

所以我有这个项目,在 2 个版本中同时进行工作,trunk 和 branch1。在某些时候我被告知“不要再为 rel1 构建,修复 rel2 中的那些错误。”所以我在 branch1 中修复了错误,这些错误也适用于主干。后来我被告知“如果我们发布带有那些已知错误的 rel1,那将是一个很大的 PITA。请同时在 rel1 中修复它们。”

所以,我的问题是(~/rel1 是主干的当前未修改的工作副本。RevM、RevN 是 branch1 中的修订号,用于我想合并回主干的一系列修订):

如果我做一个

cd ~/rel1
svn merge -r RevM:RevN ^/branch1 

它会如何影响以后的 svn merge --reintegrate 从分支到主干?请记住,RevM 之前的 branch1 中有修订,RevN 之后会有更多修订。特别是,当我最终重新整合时,是否会像我最初在 rel1 中完成修复并将它们合并到 rel2 中一样,就像一开始就应该做的那样?

最佳答案

从 Twig 到树干的 cherry-pick 变化也一直困扰着我。这是一个适用于您的情况的解决方案,诀窍是阻止精心挑选的更改再次合并到分支中。

cd ~/rel1
svn merge -r RevM:RevN ^/branch1
svn commit -m "cherry pick RevM:RevN from branch1 into rel1"

现在假设这个提交创建了 RevX。进入您的分支并使用 --record-only 选项阻止此修订在未来的合并操作中进行。

cd ../branch1
svn merge -c RevX --record-only ^/rel1
svn commit -m "mark RevX as already merged to block it from future merge actions"

现在您应该能够像往常一样再次合并从 rel1branch1 的进一步更改,并在完成后将您的分支重新集成到 rel1 中。

关于svn - cherrypick svn merge branch to trunk,随后与 --reintegrate 合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11458951/

相关文章:

svn - Xamarin Studio 4.0.13、Subversion 和 Mavericks 这个组合是否已损坏

用于使自定义修改的开源软件保持最新的 git 工作流程?

SVN从分支切换到主干

svn - 暂时收起 Subversion 中未提交的更改(如 "git-stash")

svn - Windows 7中没有TortoiseSVN的上下文菜单

svn - 从 git 还是 svn 开始?

svn - 为什么站点会显示 SVN 版本,有什么优势?

git - 确定在一个分支上而不是在另一个分支上的提交

version-control - Mercurial:在分支之间 merge ......向后?

Git - 两个分支上具有不同版本的相同文件, merge 时不想覆盖