繁体   English   中英

SVN 递归删除和忽略

[英]SVN Delete and Ignore recursively

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

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

我正在使用:
TortoiseSVN 1.6.15,内部版本 21042 - 64 位
颠覆 1.6.16

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

要将文件添加到忽略列表,您可以更新%USERPROFILE%\\local data\\.subversion\\config文件。 (我不是 100% 确定它的位置,但它应该在 %USERPROFILE% 目录下的.subversion目录下。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 资源管理器中。

我有一个可以设置的预提交钩子,所以没有人能够再次添加这些.scc文件。 您还可以将其设置为不包含 VisualStudio 放入的其他类型的文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM