我在SVN合并时做错了什么?

Ran*_*ame 16 version-control tortoisesvn merge-tracking

当具有合并跟踪的SVN工作时,它非常好,我喜欢它.但它一直在扭曲.我们正在使用TortoiseSVN.我们不断收到以下消息:

错误:只有在先前将修订版1234到2345从/ Trunk合并到重新集成源时才能使用重新集成,但事实并非如此

作为参考,这是我们使用的方法:

  1. 创建一个分支
  2. 在分公司发展
  3. 偶尔合并从Trunk到Branch 的一系列修订
  4. 当分支稳定时,将分支从分支重新整合到主干
  5. 删除分支

我在重新集成操作之前合并从主干到分支的一系列修订(将范围留空,因此应该是所有修订),因此分支应该与主干正确同步.

现在,Trunk具有多个与之关联的SVN合并跟踪属性.应该是?或者Reintegrate不应该添加任何合并跟踪信息?

我们的流程有问题吗?这使SVN无法使用 - 每3个重新整合中就有1个迫使我潜入并破解合并跟踪信息.

Gru*_*uff 10

在过去从一个树干到另一个树干进行了一次parial合并时,有时会发生这个问题.部分合并是指在整个树上执行合并但只提交部分合并时.这将为您提供树中的文件,这些文件的mergeinfo数据与树的其余部分不同步.

--reintegrate上面的错误消息应该列出svn遇到问题的文件(至少它在svn 1.6中).

你可以:

  1. 使用错误消息中的范围,从trunk到branch手动合并问题文件.注意:您必须从范围的开头减去1,因此您运行的命令将是:

    cd <directory of problem file in branch working copy>
    svn merge -r1233:2345 <url of file in trunk>
    svn commit
    
    Run Code Online (Sandbox Code Playgroud)

    要么

  2. 如果您确定分支中文件的内容是正确的,并且您只想将文件标记为已合并,则可以使用该--record-only标志svn merge:

    cd <directory of problem file in branch working copy>
    svn merge --record-only -r1233:2345 <url of file in trunk>
    svn commit
    
    Run Code Online (Sandbox Code Playgroud)

(我想你可以--record-only在整个树上使用,但我没有尝试过,你必须绝对确定没有真正的合并需要来自主干)


Kev*_* L. 3

兔子跳可能是解决方案。

基本上,当您想从主干中提取这些更改时,不是不断地将主干更改合并到单个分支(branches/foo我们称之为分支):

  1. 将主干复制到新分支 ( branches/foo2)。
  2. 合并旧分支中的更改(合并branches/foo到branches/foo2)。
  3. 删除旧分支(delete branches/foo)。

  • 我会调查一下,但这似乎很令人厌恶。如果管理分支机构这么困难,那么 SVN 的价值似乎就很低了。 (2认同)