Version control SVN合并有什么不对?
当SVN与合并跟踪工作,它真的很好,我喜欢它。但它总是被扭曲。我们用的是乌龟。我们不断得到以下信息: 错误:仅当1234至2345版本以前从/Trunk合并到重新整合源时,才能使用重新整合,但情况并非如此 作为参考,这是我们正在使用的方法:Version control SVN合并有什么不对?,version-control,tortoisesvn,merge-tracking,Version Control,Tortoisesvn,Merge Tracking,当SVN与合并跟踪工作,它真的很好,我喜欢它。但它总是被扭曲。我们用的是乌龟。我们不断得到以下信息: 错误:仅当1234至2345版本以前从/Trunk合并到重新整合源时,才能使用重新整合,但情况并非如此 作为参考,这是我们正在使用的方法: 创建分支 在分支机构中发展 偶尔合并从主干到分支的一系列修订 分支稳定时,将分支从分支重新整合到主干 删除分支 I在重新整合操作之前,将修订范围从主干合并到分支(保留该范围为空,因此应为所有修订),因此分支应与主干正确同步 现在,主干有多个与之关联的SVN合
branchs/foo
,我们称之为分支):
分支/foo2
)分支/foo
合并到分支/foo2
)分支/foo
)您的问题是,您试图对已“损坏”的分支使用重新集成合并,因为已经对其执行了“半合并”。我的建议是,如果这是您的工作流程,请忽略重新整合,并坚持使用纯版本合并 但是,出现错误的主要原因是SVN正在为您执行一些检查。在这种情况下,如果合并中有来自单个文件的额外合并信息,那么svn将抛出一个抖动并阻止您进行合并-主要是因为这种情况可能会产生您可能没有注意到的错误。这在svn重新整合术语中被称为a(请阅读“重新整合到救援”部分,特别是结尾处有争议的重新整合检查) 您可以在执行中间合并时停止记录mergeinfo,或者在分支准备就绪之前不记录分支,然后合并将拾取对主干所做的更改。我认为你也可以通过这个检查,只需要将整个主干合并到分支,而不是单独的文件,这样就可以保证mergeinfo在最后重新整合时的安全性 编辑: @randomusername:我认为(从未仔细观察过)移动是因为它落入了“部分合并”的陷阱。SVN的一个很酷的特性是,您可以执行稀疏签出-只获取树的部分副本。当您在中合并一个部分树时,SVN不能说整个东西都合并了,因为它显然不是,所以它记录的合并信息略有不同。这对重新整合没有帮助,因为重新整合必须将所有内容合并回主干,现在它发现一些位在未合并的情况下被修改,所以它抱怨。移动看起来是一样的-分支树的一部分现在在mergeinfo中的显示与预期不同。我不会为重新整合而烦恼,而是坚持正常的修订范围合并。这是一个好主意,但它试图在太多不同的情况下为太多的用户提供太多的东西
这个问题有时发生在以前从主干到分支进行对等合并时。部分合并是指对整个树执行合并,但仅提交其中的一部分。这将为树中的文件提供与树的其余部分不同步的mergeinfo数据 上面的
--reintegrate
错误消息应该列出svn有问题的文件(至少在svn 1.6中是这样)
您可以:
cd <directory of problem file in branch working copy>
svn merge -r1233:2345 <url of file in trunk>
svn commit
(我认为您可以使用
——只记录整个树上的,但我还没有尝试过,您必须绝对确保不需要从主干进行真正的合并)我怀疑您没有正确遵循合并说明:
“现在,使用svn merge和--reintegrate选项将分支更改复制回主干中。您需要/trunk的工作副本。您可以通过执行svn签出、从磁盘上的某个位置挖掘旧的主干工作副本或使用svn开关(请参阅“遍历分支”一节)获得一个副本。”.主干工作副本不能有任何本地编辑或包含修订的混合版本(请参阅“混合修订工作副本”一节)。尽管这些通常是合并的最佳做法,但在使用--reintegrate选项时需要它们
拥有主干的干净工作副本后,您就可以将分支合并回主干了:“
我在合并方面没有什么问题。我会研究一下,但这似乎很令人讨厌。如果管理分支如此困难,那么SVN的价值似乎很低。这就是为什么我在家里使用git,很快(当Windows集成稍微好一点时)在工作中使用git的原因:-谢谢你的回答。我现在对子树合并有了更好的理解,但我不知道为什么我们会看到它——我们只在顶层合并,而不是在子目录或文件级合并。然而,我们进行了一些更名,我认为这是罪魁祸首。您链接到po的页面
cd <directory of problem file in branch working copy>
svn merge --record-only -r1233:2345 <url of file in trunk>
svn commit