svn - 在 Subversion 中跨分支合并不会添加所有新文件。为什么不?

标签 svn merge branch

我有一个带有多个分支的 subversion 源代码树。我刚刚在一个活跃的分支中完成了一个相当密集的调试 session ,现在需要将更改合并到新分支。新分支最近从主干(代表已发布的代码)中删除,在旧分支中的所有开发之后(显然)但在我提交所有调试之前。正在尝试 svn merge但是,不会合并所有添加的文件。它增加了一些,但不是全部。

这是时间线:

  • 分支出主干以创建分支 dev1。
  • 在 dev1 中编写代码,修改文件和添加文件。
  • 分支出主干以创建分支 dev2。
  • dev1 中的错误修复,修改文件但不添加文件。
  • 将 dev1 中的所有更改合并到 dev2。

  • 正如预期的那样,有很多变化,包括新文件,但不是全部。是因为我合并的版本范围包括创建 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/

    相关文章:

    Git 与 SVN 主干和分支

    mercurial - 在Mercurial退出后,如何判断是否需要 merge ?

    ios - GitHub:管理应用程序不同版本的最佳方式是什么?

    regex - Ant Build 从 svn 日志输出中读取版本号

    svn - TortoiseHG 和 TortoiseSVN 一起玩得好吗?

    c - 合并排序未显示 C 中的所有答案

    merge - 将多个查询作为一个结果处理

    git - 使用另一个分支中的提交更新我的 git 分支

    Windows 的 svnx 替代品

    svn - 如何在SVN中进行独家结帐?