_M在svn状态结果中的含义是什么

时间:2014-09-18 08:16:14

标签: svn

我使用“svn merge”命令将代码更改从分支合并到主干。合并完成后,我发现一些未在分支中修改的文件在trunk中被标记为“M”。我将这些文件区分开来并得到以下结果(例如);

xxxxx$ svn diff knife.sh

Property changes on: knife.sh
___________________________________________________________________
Modified: svn:mergeinfo
    Merged /branches/development/LTE1227/knife.sh:r12198-14851

当我提交代码时,我发现这些文件在svn editor()中标记为“_M”,如下所示

   2 --This line, and those below, will be ignored--
   ... ...
   10 _M   xxx.sh
   11 _M   knife.sh
   ... ...

_M在svn编辑器中的含义是什么?我不想提交这些更改以及如何从提交列表中删除这些“_M”文件?

1 个答案:

答案 0 :(得分:3)

这意味着文件已更改属性,在您的情况下,它是svn:mergeinfo属性。在SVN 1.7.0中,引入了API来区分对文件内容或其SVN属性的修改。房产变更看起来像这样:

_M   knife.sh

纯文本修改看起来像您期望的那样:

M   knife.sh

当您从不同的源合并到它们(即从主干到分支)时,svn:mergeinfo属性会添加到文件中。 SVN使用此信息来记住已合并但尚未合并的内容,因此不会再次合并。

通常情况下保持开启(假设你有一个最近的版本,其中一些错误出现的常常被修复),但如果你真的想摆脱它,你可以恢复该文件。如果已提交,请使用propdel命令:

svn propdel svn:mergeinfo knife.sh