2013-01-23 70 views
0

我有一段時間試圖找出忽略與特定模式匹配的文件的語法,即:Com.Example/Com.Example.DomainModel23012013101705.somefileextension。該變量似乎是淹沒到文件名(23012013101705)Mercurial Glob語法與文件名中的字符匹配

日期已試過[0-9] .somefileextension和其他模式都無濟於事。

謝謝 斯蒂芬

回答

0

使用正則表達式不是水珠。 Mercurial支持無論支持哪一個。在.hgignore,這將是:

syntax: regexp 
[0-9]\.somefileextension 

該正則表達式的嘗試水珠匹配,但你可以,當然,縮小它更像是:

syntax: regexp 
^Com\.Example/Com\.Example\.DomainModel\d+\.somefileextension$ 
+0

Perfe ct,謝謝Ry4an。 –

+0

太寬正則表達式,並對不起,grep()驗證內容,而不是文件名(AFAIK) –

+0

@LazyBadger我構建了正則表達式來匹配askers glob - 我同意我會使用一個更窄的自己。你對grep()有點尷尬。 –

1

Ry4an,不幸的是,作出錯誤。 Grep()不適用於文件名。

我的 「試驗場」

>dir /B 
.hg 
404.php 
archive.php 
archives.php 
comments.php 
footer.php 
functions.php 
header.php 
html5.js 
image.php 
index.php 
license.txt 
links.php 
page.php 
readme.txt 
screenshot.png 
search.php 
sidebar.php 
single.php 
style.css 

測試

>hg locate "set:grep(html5)\.php" 
hg: parse error at 11: invalid token 

>hg locate "set:grep(html5)" 
header.php 
readme.txt 

注:發現文件,其中有文字 「HTML5」 在裏面,但不是文件 html5.js


>hg locate "set:s[a-z]+\.php" 
abort: \.php not under root 

>hg locate "set:s[a-z]+.php" 

>hg locate "set:s[a-z]+" 
hg: parse error at 7: not a prefix: end 

>hg locate "set:s\w+" 
hg: parse error at 4: not a prefix: end 

所有的測試與set:前綴和正則表達式失敗


不同的水珠圖案與集:

>hg locate "set:s**.php" 
search.php 
sidebar.php 
single.php 

>hg locate "set:s**.*" 
screenshot.png 
search.php 
sidebar.php 
single.php 
style.css 

>hg locate "set:s**e.*" 
single.php 
style.css 

正則表達式圖案在文件集

>hg locate "re:s[a-z]+.php" 
search.php 
sidebar.php 
single.php 

>hg locate "re:s[a-z]+." 
screenshot.png 
search.php 
sidebar.php 
single.php 
style.css 

恢復

hg forget "re:Com\.Example\.DomainModel[0-9]+\.somefileextension$"

hg forget "set:Com.Example.DomainModel**.somefileextension"

和同一組到hgignore

+0

不幸的是,我只關心hgignore,並沒有測試文件代碼,另一方面,正則表達式在我的基本測試中工作。感謝您的跟進。 –

相關問題