SVN递归删除和忽略

时间:2012-11-12 19:26:49

标签: svn tortoisesvn ignore

我有一个存储库,其中一些文件以 .scc

结尾

在repo的几乎每个子文件夹中都有一个这样的文件,它们都已提交。

我正在使用:
TortoiseSVN 1.6.15,Build 21042 - 64 Bit
Subversion 1.6.16

使用TortoiseSVN,我可以进入每个文件夹并右键单击该文件,然后选择“删除并添加到忽略列表”,但在每个文件夹中执行此操作都很痛苦。所以我基本上寻找一种简单的方法来递归地执行与TortoiseSVN的“删除并添加到忽略列表”完全相同。通过TortoiseSVN或命令行。

1 个答案:

答案 0 :(得分:2)

要将文件添加到忽略列表,您可以更新%USERPROFILE%\local data\.subversion\config文件。 (我不是100%确定它所在的位置,但它应该在%.subversion目录下的%USERPROFILE%目录下.Unix和Macs,它位于$HOME/.subversion/config下。

在该文件中,有一个global-ignores=参数。您可以删除其前面的#(如果尚未删除),并为其添加.ssc。它在我的这个文件版本中就像#90一样。

现在,您必须找到一种方法来删除所有这些.scc文件。你所要做的就是:

  $ find . -name `*.scc -exec svn del {} \;`

等等,你正在使用Windows。那更难了。我面前没有Windows机器,但我知道你可以通过这样做找到所有的*.scc文件:

 C:> dir *.scc /s/b

您可以将此管道传输到某种for循环中,并将其传递给svn del语句。即使我有一台Windows机器,也可能需要一段时间来计算语法。由于我面前没有Windows机器,因此更难。

最简单的方法是将输出重定向到文件,然后使用一个好的程序编辑器编辑文件(我的意思是notepad.exe}:

 C:> dir *.scc /s/b > delete_me.bat
 C:> notpadplusplus delete_me.bat

现在,您可以使用Notepad++编辑文件,并使用svn del快速为每行添加前缀。运行此delete_me.bat文件,它将删除所有*.scc个文件。 (我个人更喜欢Vim,但后来我是一个受虐狂。)

最大的问题是如何防止添加这些文件。忽略设置,因为我显示您是客户特定的。您可以在每个目录中设置svn:ignore属性。这是一个影响每个人的更全面的版本,但它仍然不会阻止某人添加它们,因为这些文件仍将显示在Windows资源管理器中。

我有一个pre-commit hook可以设置,所以没有人能够再次添加这些.scc文件。您也可以将其设置为不包括VisualStudio所放置的other types of files