&引用;“天真”;svn从分支合并到主干?

&引用;“天真”;svn从分支合并到主干?,svn,merge,tortoisesvn,branch,Svn,Merge,Tortoisesvn,Branch,我用TurtoSeVN作为我的C++项目,我试图“重新集成一个分支”回到主干。< /P> 我的案例非常简单,因此对于分支中更改的每个文件,我希望它完全覆盖主干中的匹配文件。不幸的是,OrtoiseSVN比我聪明,所以它合并了每一对文件——导致了一些不一致的代码。例如,分支中已删除的某些代码行将在合并版本中恢复 有没有办法强迫TortoiseSVN使用原始的合并行为来覆盖所有修改过的文件 谢谢, 丹 更新到分支上的最新版本 将所有文件复制到工作站上的某个位置 将分支切换到主干 使用常规window

我用TurtoSeVN作为我的C++项目,我试图“重新集成一个分支”回到主干。< /P> 我的案例非常简单,因此对于分支中更改的每个文件,我希望它完全覆盖主干中的匹配文件。不幸的是,OrtoiseSVN比我聪明,所以它合并了每一对文件——导致了一些不一致的代码。例如,分支中已删除的某些代码行将在合并版本中恢复

有没有办法强迫TortoiseSVN使用原始的合并行为来覆盖所有修改过的文件

谢谢, 丹

  • 更新到分支上的最新版本
  • 将所有文件复制到工作站上的某个位置
  • 将分支切换到主干
  • 使用常规windows资源管理器覆盖(仅覆盖更改的文件)
  • 承诺
  • “svn merge”命令就是为此而设计的,它允许您一步合并。说明。

    有点改进,因为我真的看不到一个简单的方法:

    • 在某些目录中执行分支的svn导出
    • 将所有文件从此目录复制到中继目录
    • 承诺

    据我所知,这在svn中目前是不可能的,所以乌龟VN帮不了你

    为了简化一点(好的,很多),以
    svn update
    命令为例。如果工作副本和存储库中都有修改,但没有实际冲突,
    svn update
    将简单地将存储库的更改合并到工作副本中

    我认为没有办法解决这个问题。如果存在实际冲突,可以使用
    --accept ACTION
    命令行选项仅保留本地更改(例如)。但是,如果您想为存储库和工作副本中更改的任何文件指定一个接受操作,那么很不幸,您的运气不好

    我突然想到,要求svn开发人员为这种情况提供一个命令行选项可能是一个想法,而不是及时发布它来帮助您

    我提到的冲突解决问题暗示了一种非常丑陋的黑客行为,我不建议这样做。使用您喜爱的工具,获取分支中更改的文件列表。现在,对于该列表中的每个文件,在主干上修改它,方法是在每行前面添加一个不寻常的字符。将更改提交到主干。合并以在重新集成之前更新分支,但使用
    --accept
    可防止任何可怕的主干文件进入。然后,重新整合,再次使用
    --accept
    覆盖可怕的主干文件

    我应该补充一点,你不能用OrtoiseSVN做这件事,至少不明显,因为它不支持
    --accept
    ,至少我找不到


    嗯,我说它丑得吓人。不要在家里试这个!(我当然没有。)

    以下是如何使用SVN(不要在文件系统中乱搞):

  • 查看创建分支所依据的主干修订(而不是头部修订)。
  • 将其提交到存储库(这将撤消所有后续的主干更改)。
  • 重新整合合并(您的主干工作副本现在应该与分支相同。)
  • 提交合并的主干,您就完成了!
    过于繁琐,并且容易在步骤4中丢失文件。(我将不得不有选择地复制文件,因为复制所有内容都不是一个选项-以.svn文件夹本身为例)。您可以使用TortoiseSVN“Export…”命令导出没有.svn文件夹的分支。但是,如果您删除或重命名了branch.Hrmph中的文件,那么websen的过程就不起作用了。我想没关系。我最终使用了类似的东西——使用Beyond Compare()的镜像功能只获取修改过的文件。尽管如此,这是我期望从OrtoiseSVN中获得的基本功能。至少我应该有一个简单的方法来查看错误的合并-TortoiseSVN“重新整合一个分支”用合并的副本更新文件,所以我甚至不能查看合并历史。我认为这不起作用。重新整合合并本身就是问题所在。据我所见,在第3步之后,主干工作副本可能与分支不完全相同-因为最终文件不仅仅来自分支,它是主干文件和分支文件合并的结果。不,合并仅合并在共同祖先点之后在两侧所做的更改。在这里,由于主干与分支点之间没有变化,它应该可以正常工作。步骤2的命令是什么?如果我执行“svn提交”,什么都不会发生,因为svn认为什么都没有改变