当SVN与合并跟踪一起工作时,它真的很好,我喜欢它。但它一直被扭曲着。我们使用的是TortoiseSVN。我们不断收到以下消息:
错误:只有在修订版本1234到2345之前已从/Trunk合并到重新集成源时,才能使用重新集成,但事实并非如此
作为参考,这是我们使用的方法:
在重新集成操作之前,I合并从主干到分支的修订范围(将范围保留为空,因此它应该是所有修订),因此分支应该与主干正确同步。
现在,Trunk有多个与之关联的SVN合并跟踪属性。应该是这样吗?或者,重新集成不应该添加任何合并跟踪信息?
我们的流程有什么问题吗?这使得SVN变得不可用-每3个重新集成中就有1个迫使我潜入并破解合并跟踪信息。
发布于 2010-09-22 23:04:16
当过去从主干到分支执行parial合并时,有时会出现此问题。部分合并是指在整个树上执行合并,但只提交其中的一部分。这将为您提供树中具有与树的其余部分不同步的mergeinfo数据的文件。
上面的--reintegrate
错误消息应该列出svn有问题的文件(至少在svn1.6中是这样)。
您可以执行以下任一操作:
cd服务器合并-r1233:2345服务器提交
或者
--record-only
标志svn merge
:cd svn merge --仅记录-r1233:2345 svn commit
(我认为你可以在整个树上使用--record-only
,但我还没有尝试过,你必须绝对确定没有真正的合并需要来自主干)
发布于 2010-05-12 23:30:23
Bunny hopping可能是解决方案。
基本上,当您想要从主干中提取这些更改时,而不是不断地将主干更改合并到单个分支(branches/foo
,让我们称之为它):
在从旧分支进行的更改中,将主干复制到新分支中(将(branches/foo2
).
branches/foo2
).
branches/foo
).发布于 2010-06-01 07:39:34
你的问题是,你试图在一个分支上使用重新集成合并,这个分支已经被“半合并”了。我的建议是,如果这是你的工作流程,那就忽略重新集成,并坚持在版本合并时使用普通版本。
然而,您得到错误的主要原因是因为SVN正在为您执行一些检查。在这种情况下,如果合并包含来自单个文件的额外合并信息,那么svn将抛出一个不稳定并阻止您合并-主要是因为这种情况可能会产生您可能没有注意到的错误。在svn重新集成术语中,这称为subtree merge (请阅读“重新集成到救援”部分,特别是最后有争议的重新集成检查)。
您可以在执行中介合并时停止记录mergeinfo,或者让分支保持原样,直到它准备就绪-然后合并将获取对主干所做的更改。我认为你也可以通过将整个主干合并到分支,而不是单独的文件来通过这个检查,从而保证合并信息在最后的重新集成中是安全的。
编辑:
@随机化用户名:我认为(从来没有仔细观察过)移动时,它落入了“部分合并”陷阱。SVN的一个很酷的特性是,您可以执行稀疏结帐-只获得树的部分副本。当您在中合并部分树时,SVN不能说整个事物都被合并了,因为它显然没有合并,所以它记录合并信息的方式略有不同。这对重新集成没有帮助,因为重新集成必须将所有内容合并回主干,现在它发现一些位在没有合并的情况下被修改,所以它会抱怨。移动看起来是一样的--分支树的一部分现在在mergeinfo中的显示与它预期的不同。我不会为重新整合而烦恼,而是坚持正常的修订范围合并。这是一个很好的想法,但它试图在太多不同的情况下为太多的用户提供太多的东西。
https://stackoverflow.com/questions/2820275
复制相似问题