当我们使用svn进行分支和合并时,总是会发生同样的事情。
我们获取主干的最新副本。
创建并切换到一个分支。
在分支上对某个文件进行一些小修改。
将分支合并回主干。
此时,我们会有一个需要提交的文件以及45个额外的文件。这在每次分支和合并时都会发生,并且始终是相同的45个额外文件。我不知道如何解决这个问题,但它非常令人恼火。
有人以前见过这种情况吗?
更新: 当我提交时,实际更改的文件的文本状态为已修改,属性状态为空。 "45个文件"的所有文本状态都是正常的,属性状态为已修改。
当我们使用svn进行分支和合并时,总是会发生同样的事情。
我们获取主干的最新副本。
创建并切换到一个分支。
在分支上对某个文件进行一些小修改。
将分支合并回主干。
此时,我们会有一个需要提交的文件以及45个额外的文件。这在每次分支和合并时都会发生,并且始终是相同的45个额外文件。我不知道如何解决这个问题,但它非常令人恼火。
有人以前见过这种情况吗?
更新: 当我提交时,实际更改的文件的文本状态为已修改,属性状态为空。 "45个文件"的所有文本状态都是正常的,属性状态为已修改。
编辑:有关 SVN 合并问题和修复,请参见此博客文章。
很可能是合并信息属性引起的问题,你可能需要清理你的主干(trunk)中文件和文件夹上的合并信息属性。使用批处理文件来处理这个问题会更方便,因为你将来可能需要再次进行清理。以下是一个示例:
echo Removing Nested Merge Information...
svn propdel svn:mergeinfo subfolder1 --depth=infinity
svn propdel svn:mergeinfo subfolder2 --depth=infinity
svn propget svn:mergeinfo --depth=infinity trunk
在使用批处理文件对主干工作副本运行后,将提交回主干。
此外,重命名和移动文件夹是在子版本库中为文件夹/文件生成合并信息属性的常见方法。 svn1.6不会像添加各种操作的合并信息属性那样慷慨。
请阅读详细文章,网址为http://www.collab.net/community/subversion/articles/merge-info.html
虽然篇幅较长,但很值得一读。特别注意最后的“Parting Thoughts”部分中的建议,其中包括减少合并信息噪音的提示。
另外,不要使用svn propdel来清除不需要的合并信息,考虑使用带有--record-only选项的svn merge命令。
个人认为,至少在当前的工具状态下,合并信息比解决问题更多。一旦它在提交时变得透明,也许就值得使用了。
您可以安全地删除合并信息属性。但是,请注意,您需要手动跟踪要合并的修订版以进行重新整合。