当我们进行分支并与svn合并时,我们总会发生同样的事情。
我们得到了行李箱的最新副本。
创建分支并切换。
对分支中的一个文件进行一些小改动。
将分支合并回主干。
此时,我们将有一个需要被篡改的文件,以及相同的45个额外文件。这发生在每个分支和合并上,并且它总是相同的45个额外文件。我不知道如何解决问题,但它非常烦人。
有没有人见过这个?
更新:当我进行提交时,我实际更改的文件的文本状态已修改,其属性状态为空。 “45个文件”都是文本状态正常,属性状态已修改。
答案 0 :(得分:12)
他们可能是 mergeinfo 属性。使用SVN 1.5版本时,设置 mergeinfo 属性非常积极,并且在合并时,这些属性会更新 - 需要提交它们。
答案是从中删除 mergeinfo 属性。也升级到版本1.6,它具有更好的 mergeinfo 支持(即它写的更少这些属性)。
如果你看一下差异,我应该说这些文件没有明显的变化。显然,如果他们的内容被更改,那么更改的内容可能会给你一个线索(例如,自动工具编写额外的注释,修改布局或在顶部或底部添加行)。
编辑:有关SVN合并问题和修复的详情,请参阅this blog post。
答案 1 :(得分:5)
最有可能是提到的mergeinfo属性。您可能希望清除trunk中文件和文件夹的mergeinfo属性。批处理文件对此非常方便,因为您将来可能需要再次执行此操作。如下所示:
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
然后在trunk的工作副本上运行批处理文件后,回到trunk。
此外,重命名和移动文件夹是在subversion repo中的文件夹/文件上生成mergeinfo属性的常用方法。 svn1.6对于为各种操作添加mergeinfo属性并不慷慨。
答案 2 :(得分:3)
阅读http://www.collab.net/community/subversion/articles/merge-info.html
上的详细文章这很长但值得。请特别注意最后“Parting Thoughts”部分中的建议,其中包括减少mergeinfo噪声的提示。
此外,不要使用svn propdel来清理不需要的mergeinfo,而应考虑将svn merge与--record-only选项一起使用。
答案 3 :(得分:1)
就我个人而言,我认为mergeinfo引起的问题多于它解决的问题,至少在工具的当前状态下如此。一旦提交透明,也许值得使用。
您可以安全地删除mergeinfo属性。但是,请注意,您需要手动跟踪要合并的修订版本以进行重新集成。