Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OrtoiseSVN如何将更改从主干合并到分支,反之亦然?_Svn_Tortoisesvn_Merge_Branch - Fatal编程技术网

使用OrtoiseSVN如何将更改从主干合并到分支,反之亦然?

使用OrtoiseSVN如何将更改从主干合并到分支,反之亦然?,svn,tortoisesvn,merge,branch,Svn,Tortoisesvn,Merge,Branch,我一直在阅读有关使用优秀的免费书籍进行分支/合并Subversion 1.5的文章。我认为我了解如何使用Subversion命令行客户端执行我最经常需要的操作,这些操作包括: 使用来自主干的更改更新分支 从分支的工作目录运行: svn合并 将分支合并到主干中 从主干的工作目录运行: svn合并--重新整合 然而,我们正在使用OrtoiseSVN 1.5作为我们的Subversion接口。我想知道如何最好地用乌龟进行这些操作。“新建”对话框在主菜单上提供三个不同的选项 合并一系列修订 重新整合分支

我一直在阅读有关使用优秀的免费书籍进行分支/合并Subversion 1.5的文章。我认为我了解如何使用Subversion命令行客户端执行我最经常需要的操作,这些操作包括:

使用来自主干的更改更新分支

从分支的工作目录运行:

svn合并

将分支合并到主干中

从主干的工作目录运行:

svn合并--重新整合

然而,我们正在使用OrtoiseSVN 1.5作为我们的Subversion接口。我想知道如何最好地用乌龟进行这些操作。“新建”对话框在主菜单上提供三个不同的选项

  • 合并一系列修订
  • 重新整合分支
  • 合并两棵不同的树
  • 据我所知,TortoiseSVN总是使用以下语法执行svn

    svn合并[--干运行]--强制从_URL@revN到_URL@revM路径

    此外,重新整合分支通常会失败,并显示一条消息,说明某些目标尚未合并,因此无法继续,因此我不得不使用选项#3

    我的问题是:

  • 如何使用OrtoiseSVN 1.5将主干的更改合并到分支
  • 我如何使用TortoiseSVN 1.5将分支合并到主干,有无重新整合方法
  • 以上选项中的哪一个我都应该使用,为什么

  • 编辑

    通过“干运行”测试,我发现命令行的Subversion操作

    svn合并

    与Ortoisesvn中的选项#1(合并修订范围)类似,只要我将修订范围留空。

    您应该使用“合并修订范围”

    要将更改从主干合并到分支,请在分支工作副本内选择“合并修订范围”,然后输入主干URL以及要合并的开始和结束修订

    以相反的方式合并主干中的分支


    关于--reintegrate标志,请查看此处的手册:

    行为取决于存储库的版本。Subversion 1.5允许4种类型的合并:

  • 合并源URL1[@N]sourceURL2[@M][WCPATH]
  • 合并sourceWCPATH1@N sourceWCPATH2@M[WCPATH]
  • 合并[-cm[,N.]|-rn:M…]源[@REV][WCPATH]
  • 合并--重新整合源[@REV][WCPATH]
  • Subversion 1.5之前的版本只允许前2种格式

    从技术上讲,您可以使用前两种方法执行所有合并,但后两种方法启用subversion 1.5的合并跟踪

    当您的存储库为1.5+时,OrtoiseSVN的选项会将一个范围或修订映射到方法3,当您的存储库较旧时,会将其合并到方法1

    将功能合并到发布/维护分支时,应使用“合并修订范围”命令

    只有当您希望将分支的所有功能合并回父分支(通常为主干)时,才应该考虑使用“重新集成分支”

    最后一个命令-合并两个不同的树-仅当您想要跳出正常的分支行为时才有用。(例如,比较不同的版本,然后将不同的版本合并到另一个分支)

    看看。它是命令行,不能被OrtoiseSVN调用,但它更强大。从:

    传统的颠覆会让你 合并更改,但不合并 “记住”你已经合并的内容。 它也不能提供一个方便的解决方案 将更改集排除在外的方法 合并。svnmerge.py自动执行以下操作: 这项工作,并简化它。斯文梅奇 还使用 记录来自它的所有内容的消息 合并


    我无法正确地理解其他答案,这里有更多的傻瓜指南

    您可以通过以下两种方式进行操作:
    trunk->branch
    branch->trunk
    。我总是先做
    trunk->branch
    修复那里的任何冲突,然后合并
    branch->trunk

    将主干合并到分支/标记中
  • 签出分支/标签
  • 右键单击分支的根| Tortoise SVN | Merge
  • 合并类型:合并一系列修订|单击“下一步”
  • 合并修订范围:选择复制到分支/标记的主干目录的URL。输入要合并的修订或将字段留空以合并所有修订|单击“下一步”
  • 合并选项:我只是将这些作为默认设置|单击“合并”
  • 这将把修订合并到签出的分支/标记中
  • 然后将合并的更改提交到分支/标记

  • 按住Shift键并在文件夹上单击鼠标右键,然后选择TortoiseSVN->Merge All

    svnmerge.py是在Subversion 1.4及更早版本上开发的。Subversion 1.5在核心产品中引入了合并跟踪。我省略了“要合并的修订范围”,并进行了“测试合并”。这正是我所需要的:范围是自动为我设置的(从分支完成时到分支中的最后一次修订),这是一个很好的答案——简洁易懂。这对我来说很有效,但当我只想合并一个配置文件时,出于某种原因,我不得不合并两次。现在一切都好了。Cheers@Lian我做了同样的事情,把树干合并成树枝;如果希望主干文件的最新版本与分支文件合并,请将修订范围保留为空。当前版本的Tortoise SVN现在可以选择合并所有修订,而不是在步骤4中将修订范围保留为空。@Onkar一些冲突几乎总是会发生。如果您有两个分支,例如
    trunk
    branch
    ,那么确保尽快将
    trunk
    branch
    的任何更改合并,将尽可能避免冲突。这意味着当您合并
    分支时