如何svn忽略已添加到存储库的文件?

时间:2011-02-12 13:46:44

标签: svn

如何忽略已添加到svn存储库的文件?

我想排除文件config.php:

$ svn st
M      .
M       config.php
M       adminfunctions.php

所以,我使用:

$ svn propedit svn:ignore .

并将config.php添加到列表中。

然后,如果我再做一次svn st,我第一次也会这样:

$ svn st
    M      .
    M       config.php
    M       adminfunctions.php

现在不会排除config.php吗?

提前致谢!

2 个答案:

答案 0 :(得分:17)

svn:ignore仅影响尚未添加的文件。

因此,在您的情况下,您必须使用svn del从存储库中删除文件 - 不要忘记将它们临时复制到其他位置)。将文件复制回原始目录后,svn不会将它们标记为新的(并尝试添加它们)。

编辑: 或者,正如@Blake所评论的那样,当您执行--keep-local而不是将文件复制到其他位置时,可以使用svn del选项。

答案 1 :(得分:1)

这是我遇到的问题以及希望它对某人有用的解决方案。

假设您在'D'目录中有'a,b,c'文件。

您从工作副本中删除'a,b,c'文件,并将'svn:ignore *'属性/值添加到'D'目录并将这些更改提交为修订版1234.之后如果您在工作副本的“D”目录中放回相同的“a,b,c”文件,然后svn仍将'a,b,c'文件视为未版本。

解决此问题:

  • 在某处保留“a,b,c”文件的备份,并删除工作副本的“D”目录中的文件。
  • 更新目录“D”上1234之前的版本。这会将“a,b,c”文件从存储库中拉回到您的工作副本。
  • 然后更新目录“D”上的HEAD修订版。
  • 这将从工作副本上的目录“D”中删除“a,b,c”。
  • 最后将“a,b,c”文件放回工作副本的“D”目录中。

现在,'a,b,c'被svn视为忽略。