SVN存储库和Windows索引服务在争夺.svn元数据文件方面存在一个已知问题。此处了解更多详情。
我们如何进行设置,以使使用Windows(Vista / Win7)索引的Subversion存储库不会自动出现问题。(我们不想每次添加repo目录时都必须手动执行操作。)
一个想法是将Windows设置为不自动对名为“ .svn”的文件夹进行索引,但是我找不到解决方法。
我知道您可以禁用某些扩展名,但这似乎不起作用,因为svn元数据文件位于文件夹中。
注意:
SVN存储库和Windows索引服务在争夺.svn元数据文件方面存在一个已知问题。此处了解更多详情。
我们如何进行设置,以使使用Windows(Vista / Win7)索引的Subversion存储库不会自动出现问题。(我们不想每次添加repo目录时都必须手动执行操作。)
一个想法是将Windows设置为不自动对名为“ .svn”的文件夹进行索引,但是我找不到解决方法。
我知道您可以禁用某些扩展名,但这似乎不起作用,因为svn元数据文件位于文件夹中。
注意:
Answers:
我遇到了同样的问题,找到了解决方案。我所有的代码都存储在一个文件夹中:
F:\ projects \
在该文件夹下是总计超过2GB的代码树和相关项目文件。我一直需要搜索这棵树和Windows,实际上索引实际上是进行快速搜索的非常有用的工具,因此不能选择禁用它。我想排除SVN文件夹,因为它们会使我的搜索结果混乱,(2)对我的系统造成不必要的拖累,(3)SVN,Win7和MS Security Essentials在执行大型SVN操作时似乎不能很好地工作。
在尝试解决方案之前,请重现该问题:
解:
csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE
我首先运行命令:csmcmd.exe /enumerate_rules
,列出了所有现有命令,从而弄清楚了这一点 。Windows已经有了使用asterix(*)通配符的一些规则,因此证明了这是可能的。
现在,重复上述步骤以重现此问题,并且您应该再也不会在搜索结果中看到SVN混乱。给计算机一些时间来更新索引-在我的系统上花了不到5分钟的时间。有时,重新启动Search服务,启动重建/重新索引或重新启动可以帮助您顺利进行。
更新:我的某些SVN项目使用“ .svn”,而有些则使用“ _svn”,因此我已将这两个规则添加到每个驱动器中:
csmcmd.exe /add_rule file:///F:\*\.svn\* /DEFAULT /EXCLUDE
csmcmd.exe /add_rule file:///F:\*\_svn\* /DEFAULT /EXCLUDE
AFAIK,Windows 7上的Windows索引服务仅在Users文件夹中作为默认值显示(如果我输入错误,请纠正我)。如果您的个人文件夹中有SVN存储库,则可以:
a)将您的SVN存储库放在其他位置
b)通过从索引中排除那些文件夹。在这里,您将找到如何排除文件夹。
显而易见的解决方法是更改Subversion在创建.svn目录时设置此“不索引”标志。问题在于,引入此功能后将不再需要此功能。
当前正在开发的Subversion版本(1.7版)中,已知问题很可能会消失。.svn目录中的文件操作将少得多,每个工作副本只有1个.svn目录。
因为只有一个.svn文件夹,所以减少了发生该问题的可能性,也使禁用索引变得容易得多。
WDS组策略具有的选项Prevent Indexing Certain Paths
,但根据功能表未列出Windows Vista可用的选项。
受支持于:Windows XP,带有Windows Search 3.01的Windows Server 2003或带有Windows Search 4.0或更高版本的任何版本的Microsoft Windows。
如果Darren Halls的答案是“蛮力”方法,那么我的答案必须是“蛮力和无知”方法。:)
这是最近让我烦恼的事情,因为我们使用SVN进行文档和项目管理,这可能意味着Windows索引器在能够搜索晦涩的文档方面非常有用,但是捕获所有svn存储文件只是没有用。
这是我在Windows批处理文件中的解决方案(比较难看):
ATTRIB /S /D -H ".svn"
ATTRIB /S /D +I ".svn"
ATTRIB /S /D +I "all-wcprops"
ATTRIB /S /D +I "entries"
ATTRIB /S /D +I "tmp"
ATTRIB /S /D +I "props"
ATTRIB /S /D +I "text-base"
ATTRIB /S /D +I "prop-base"
ATTRIB /S /D +I "*.svn-base"
ATTRIB /S /D +H ".svn"
因为ATTRIB拒绝将+ I开关应用于隐藏文件夹,所以至少存在第一行和最后一行,至少对我而言是如此。您需要将其复制到“ svnNoIndex.bat”之类的文件中,并在SVN checkout目录中运行,而使用大型存储库则可能需要一些时间...
我目前正在使用最新的Service Pack在Vista下进行测试,我希望它可以在Windows 7上运行。我不知道是否需要重建索引以考虑到现在标记为未索引的文件这样做,但是无论如何我都需要重建我的,所以这就是我正在做的,因为索引重建只有几天的时间。
为了使该文件成为“自动”文件,您可以将批处理文件添加为更新后挂接的钩子,该钩子在更新后即可运行...虽然它很杂乱,但可能会起作用。
您可以通过调整注册表来告诉Windows搜索忽略.svn文件夹。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\DefaultRules\11]
"URL"="file:///*\\.svn\\*"
"Include"=dword:00000000
"Suppress"=dword:00000000
"Default"=dword:00000001
"Policy"=dword:00000000
该URL与文件系统上任何位置的名为“ .svn”的文件夹匹配。(默认规则后的数字应该是唯一的-即,如果您已经有默认规则11,请选择另一个数字)。