我有一个包含这些文件夹的存储库,并且我有这些目标:
/temp/ <-- I want svn to ignore this
/**/temp <-- I want svn to ignore this ('temp' in any recursive folder, i.e. at any depth level)
/bar/**/temp <-- I want svn to NOT ignore 'temp' anywhere inside 'bar' (at any depth level)
阅读 svn:ignore 文档,我找不到任何可以处理这个问题的语法。
a) 使用 tortoise-svn 客户端可以吗?
b) 常规命令行 svn 客户端怎么样?
您的问题包含两部分,1)如何递归地忽略目录和2)如何不忽略某个目录。
不幸的是,第一个问题的答案似乎是不可能的。与 git 通常在其根目录中具有
.gitignore
不同,Subversion 在每个目录级别评估 svn:ignore
属性。引用自红豆书关于忽略未版本控制的项目(强调我的):
第二个问题的答案已经隐藏在链接页面的标题中:您只忽略当在版本化目录中找到时,
属性应包含换行符分隔的文件模式列表,Subversion 应使用该列表来确定同一目录中的可忽略对象。[..] 再次值得注意的是,与svn:ignore
global-ignores
选项不同,svn:ignore
属性中找到的模式仅适用于设置该属性的目录,而不是其任何子目录。
unversioned 项目。一旦您对文件或目录进行了svn add
'编辑,它将不再被忽略。即使
svn:ignore
会这么说。顺便说一句,无论您使用 TortoiseSVN 还是
svn:ignore
CLI,对
svn
的评估都是相同的。界面不同,底层功能是一样的。第一个问题的解决方案是遍历所有目录并将“temp”添加到其
svn:ignore
属性中。如果您不想使用 TortoiseSVN 单击所有目录,您可以考虑使用您最喜欢的脚本语言编写一个小脚本。如果加上
bar/temp
,第二个问题就已经解决了。如果您决定编写脚本,则不应将
svn:ignore
设置为
bar
。虽然没有必要,但不这样做可能会导致意外。