【发布时间】:2024-01-20 03:53:01
【问题描述】:
我有一个 svn 的“问题”,我不明白为什么有时当我合并两个分支时,它会报告修改了文件的 mergeinfo 属性,而文本没有更改。
这是正常行为吗?
如果不是,可能是什么问题?
【问题讨论】:
我有一个 svn 的“问题”,我不明白为什么有时当我合并两个分支时,它会报告修改了文件的 mergeinfo 属性,而文本没有更改。
这是正常行为吗?
如果不是,可能是什么问题?
【问题讨论】:
嗯,你确实合并了这两个分支。正确的?按预期工作。
您所做的是进行合并。即使合并没有导致任何代码更改,这在合并中并不少见,Subversion 仍然标记合并已完成。如果没有别的,标记你做了一个合并——即使它没有导致任何变化,仍然是一个好主意。想象一下发布了一个版本,有人说“等等,没有人将该分支合并回主干!我们将不得不推迟发布,直到我们完成它”,因为他们没有看到合并到svn:merge-info 记录中。
所以,是的,您所看到的可能是正常行为。
现在,如果您的问题是“为什么我的更改没有被合并”,那就是另一个问题了。 Subversion 通常在合并方面做得很好,但你必须确保你做一些事情:
svn:merge-info。--reintegrate 标志。您有一个分支“A”(在本例中可能包括主干)。你从分支“A”创建了一个分支“B”。
--reintegrate
--reintegrate。它改变了 Subversion 处理合并的方式。svn merge --record-only,以便 Subversion 知道您已经完成了合并。当开发人员手动进行一些合并而其他人允许 Subversion 进行合并时,就会产生欢闹。因此,如果 Subversion 没有合并它应有的更改,请确保您正确使用了 --reintegrate,并且您没有遇到上述其他问题。
【讨论】:
svn:mergeinfo。 configuration.xml 被更改,因为有人只对那个文件做了svn merge,现在它也必须跟踪合并。因此,svn:mergeinfo 也得到了更新。这就是为什么我说总是从项目的根目录合并。否则,您最终会得到数千个文件——每个文件都有自己的svn:mergeinfo。
configuration.xml,这就是问题所在,如果没有任何修改,SVN设置mergeinfo属性...
svn:mergeinfo 属性,则表示有人对该文件进行了合并,并且仅在遥远的过去合并了该文件。 svn:mergeinfo 设置在合并的根目录上(这就是我陈述第一点的原因)。在文件或目录上设置svn:mergeinfo 后,即使它不在树的根目录上,它也会在每次合并时更新。见Mergeinfo Inheritance。您可以删除configuration.xml 上的svn:mergeinfo 属性以停止合并跟踪。然后,它不会更新它。
configuration.xml 文件上有一个 svn:mergeinfo 属性。
svn:mergeinfo 属性用于跟踪有关已在您的存储库中执行的合并的信息。
详见 SVNBook:"Mergeinfo and Previews"。
【讨论】: