.hgignore过滤掉所有类似的文件夹结构

时间:2014-05-23 17:24:34

标签: c# regex mercurial hgignore

我在一个存储库中有很多C#类库。我想要覆盖/ obj / Debug /文件夹中存在的所有文件,无论它们存在于何处。它们可能基本上存在于各个项目的任何深度。

示例:

RepositoryMainFolder \ MainProject \ OBJ \调试\ RepositoryMainFolder \ RepositoryMainFolder.Internal.ProjectA \ SbiLib.Internal.ProjectA \ OBJ \调试\ RepositoryMainFolder \ RepositoryMainFolder.Internal.ProjectB \ RepositoryMainFolder.Internal.ProjectB \ OBJ \调试\

到目前为止,我已经尝试了一些方法,但这似乎就像我所追求的那样,但似乎没有用。

.hgignore:

syntax: glob
RepositoryMainFolder/*/obj/Debug/*
RepositoryMainFolder/*/obj/x64/Debug/*

我已经尝试在正则表达式语法下做同样的事情,它也不起作用。

1 个答案:

答案 0 :(得分:1)

嗯,glob语法是" shell-style&#34 ;;例如,在Windows和Unixen上,*不会递归到子目录中,而是匹配单个文件/文件夹。显然是Mercurial supports the ** glob,其中 递归:

syntax: glob
RepositoryMainFolder/**/obj/Debug/
RepositoryMainFolder/**/obj/x64/Debug/

对于Mercurial来说,整体并不是绝对的路径 - 所以你可以简单地写一下:

syntax: glob
/obj/Debug/
/obj/x64/Debug/

甚至只是

syntax: glob
/obj/

使用正则表达式,*本身不是通配符,而是量词,这意味着之前的任何内容都是零或更多。 .匹配正则表达式中的任何字符,因此您可以写:

syntax: regexp
RepositoryMainFolder/.*/obj/Debug/
RepositoryMainFolder/.*/obj/x64/Debug/