我使用水銀,並有我的項目標準的Maven佈局幾個子模塊,如:.hgignore「目標」也有一些例外的文件夾
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:
src
syntax: regexp
^(?!(/src/).)/target$
(不匹配,但匹配,如果有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 directory和hgignore: help ignoring all files but certain ones得到了正則表達式語法的想法。
P.S.我知道我可以通過.hgignore
排除文件hg add
,我已經完成了這一步。但這是一個臨時措施。
邊注:我發現了,爲什麼我的正則表達式沒有任何影響。我顯然在''.hgignore'的某處有'syntax:glob */target/**'。如果沒有這一行,它們允許任何地方的'target'文件夾中的任何內容,這也是不正確的。 – nvamelichev