.hgignore'目标'文件夹有一些例外

时间:2014-03-19 17:22:59

标签: java regex mercurial hgignore

我使用Mercurial并为具有多个子模块的项目提供标准的Maven布局,例如:

submodule1/src/main/java/xyz/.../
submodule1/src/main/java/xyz/.../target/Target.java
submodule1/src/test/java/xyz/.../target/TargetTest.java
submodule1/target/classes/xyz/.../target/Target.class
submodule1/target/something_else...
submodule2/...
etc...

要从SCM中排除所有target个文件夹,除非target位于src下,例如submodule1/src/main/java/xyz/.../target/Target.java,我尝试了以下.hgignore s:< / p>

syntax: regexp
^(?!(/src/).)/target$

(如果任何文件夹名为src,则不匹配,但如果有target文件夹则匹配)

syntax: regexp
^[^/]*/(?!(/src/).)*[^/]*/target$

(某些文件夹,如果任何文件夹名为src,则不匹配,然后是其他一些文件夹,然后是target文件夹)。

但这两个.hgignore都不起作用,submodule1/src/main/java/xyz/.../target文件夹仍然被排除在外,还有其他target文件夹。

以前,我只是忽略了直接位于子模块文件夹中的target来解决这个问题,例如。

syntax: regexp
^submodule1/target$

但子模块太多,每次添加子模块时都需要编辑.hgignore

我从.hgignore file is not ignoring the maven target/site directoryhgignore: help ignoring all files but certain ones获得了regexp语法的提示。

P.S。我知道我可以hg add .hgignore {{1}}排除的文件,我就是这么做的。但这是一个临时措施。

1 个答案:

答案 0 :(得分:0)

这是一种方式。它只标识/ target /,它不是/ src /

的子目录
 # "^(?=.*/target/)(?!(?:(?!/src/|/target/).)*/src/.*(?<=/)target/)"

 ^                                  # BOS
 (?= .* /target/ )                  # Contains /target/, 
 (?!                                # But, does not contain /src/ .. /target/
      (?:
           (?! /src/ | /target/ )
           . 
      )*
      /src/ .* (?<= / ) target/
 )