我有一个带有多个分支的 subversion 源代码树。我刚刚在一个活跃的分支中完成了一个相当密集的调试 session ,现在需要将更改合并到新分支。新分支最近从主干(代表已发布的代码)中删除,在旧分支中的所有开发之后(显然)但在我提交所有调试之前。正在尝试 svn merge
但是,不会合并所有添加的文件。它增加了一些,但不是全部。
这是时间线:
正如预期的那样,有很多变化,包括新文件,但不是全部。是因为我合并的版本范围包括创建 dev2 分支的版本吗?或者我应该先合并到主干然后再合并到 dev2?
编辑:所有代码都完全提交到 Subversion 中。但我认为可能发生的情况是文件添加不会通过合并传播。也就是说,与 dev1 的先前合并添加了一些文件,但包含来自先前合并的提交的来自 dev1 的合并不包括添加的文件。
但我还在检查。
最佳答案
以下说法不正确:
Files that were added to a branch and then changed on the branch don't get added when doing a merge across number of revisions
这意味着合并完全被破坏了。
进行合并时,您需要确保合并创建文件的修订版,否则您将收到有关没有目标的警告。
另一件要注意的事情是,如果您合并到工作副本中,然后决定对它不满意并还原所有内容,新添加的文件仍将在工作副本中,因此如果您再次合并,未版本控制的文件将阻止新文件在那里合并,因此您会错过它们。因此,运行“svn status”并删除未版本控制的文件将确保合并正常工作。
不应该添加关于添加空文件的注释,因为这样新文件就没有它来自何处的历史记录。换句话说,它不是副本,因此“svn log”不会显示其历史记录。最后,如果文件是一张千兆字节的照片,您不会希望将其合并到一个新文件中,因为这样存储库将拥有完全相同上下文的两个副本。合并和复制历史可以节省存储库存储(至少在加入代表共享之前)。
关于svn - 在 Subversion 中跨分支合并不会添加所有新文件。为什么不?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/754082/