2012-07-03 106 views
3

我有一個RE檢查器,說這應該工作。我究竟做錯了什麼?!?Mercurial .hgignore沮喪

的什麼,我試圖忽視

例子:

apps/cms/templates/cms/test_bup_DEPRECATED/widgets/page_link.html 

我的.hgignore文件:

syntax: regexp 
^static 
.*_DEPRECATED.* 

我已經嘗試了各種東西,並沒有成功:(

另一個嘗試失敗:

syntax: glob 
_DEPRECATED/* 

更新: 我編輯的.hgignore文件是:

syntax: glob 
**_DEPRECATED/** 

但汞ST還在做這樣的:

$ hg st | grep DEPR 
A apps/cms/templates/cms/test_DEPRECATED/base.html 

此相同的結果:

syntax: glob 
_DEPRECATED 
+0

回答:首先確保文件未被跟蹤 - hg忘記

; hg com -m'Grr'然後添加glob * _DEPRECATED(或僅爲dirs添加尾部斜槓) –

+0

不能,如果您希望尾部斜槓正常工作,請使用正則表達式。 –

+0

再次感謝馬克:) –

回答

8

首先,.hgignore不會忽略已經被水銀跟蹤文件。您的示例表明該文件已被跟蹤:

$ hg st | grep DEPR 
A apps/cms/templates/cms/test_DEPRECATED/base.html 

該文件已被添加,但未提交。使用hg forget忘記該文件,然後忽略模式將生效。

.hgignore模式匹配路徑的任何部分,所以這是所有你需要:

syntax: regexp 
_DEPRECATED/ 

注意您可能要對目錄結尾的斜線,否則將匹配_DEPRECATED以及結尾的文件,否則降它。

要解決忽略模式,TortoiseHg中的忽略GUI(thg ignore)非常有幫助。它顯示所有未被跟蹤且未被忽略的文件,並且可以輸入模式直到忽略正確的文件。

+0

謝謝,忘記了這些文件並提交了,但glob必須是這樣的:* _DEPRECATED /不是 _DEPRECATED /這沒有工作:) –

+0

正則表達式不需要*,glob可以。我使用上面的正則表達式。此外,glob仍然會阻止以DEPRECATED結尾的文件,即使是/添加也是如此,如果這對您很重要。做出明智的選擇 :) –

0

我認爲這*是你的正則表達式中的*字符。我認爲因爲*表示0或更多,那麼正則表達式會匹配字符串的位置0,忽略每個文件,hgignore將其解釋爲一個錯誤,將表達式置零。

我只會使用「_DEPRECATED」(不帶引號),因爲這將匹配字符串的字符31。我選擇了這個子集,因爲它看起來像是試圖忽略其中包含字符串_DEPRECATED的任何文件。如果這不符合你的要求,請告訴我,我會試着想出一個可以使用的不同的正則表達式。

另外,你是否試圖忽略任何以字符「靜態」開頭的文件,因爲這是其他行看起來像它正在做的。

另外,還有一種可以使用的glob語法,它比正則表達式更直接。您可以使用語法來輕鬆忽略整個目錄。我不知道你是如何佈置你的項目的,但是如果忽略整個目錄來實現你的目標,這是一個簡單的方法。

更多的文檔是在這裏:http://www.selenic.com/mercurial/hgignore.5.html

+0

謝謝,但仍然無法實現它。見上面的更新。 –

+0

怎麼樣「語法:regexp」,然後下一行,「_DEPRECATED」 –

1

正確的答案:

syntax: glob 
**_DEPRECATED/** 

例子:

$ cat .hgignore 
syntax: glob 
**_DEPRECATED/** 
$ find . | fgrep -v /.hg/ 
. 
./.hgignore 
./apps 
./apps/cms 
./apps/cms/templates 
./apps/cms/templates/cms 
./apps/cms/templates/cms/file 
./apps/cms/templates/cms/test_bup_DEPRECATED 
./apps/cms/templates/cms/test_bup_DEPRECATED/widgets 
./apps/cms/templates/cms/test_bup_DEPRECATED/widgets/page_link.html 
$ hg st 
? apps/cms/templates/cms/file 
+0

謝謝,但仍然無法實現它。見上面的更新。 –

+0

但你添加了文件到mercurial!當然它會顯示它! 'A apps/cms/templates/cms/test_DEPRECATED/base.html' –

+0

感謝這項工作(一旦文件未被跟蹤 - 請參閱上面的Mark的回答) –