2011-09-01 74 views
3

我GOOGLE了一下,但沒有找到任何關於該主題的建議。 .hgignore中可能存在多行正則表達式? 我正在寫一個magento模塊,並且不想只將我的模塊代碼包含在存儲庫中,所以我想出了這個正則表達式,但是如果必須將它寫入一行中,它會變得很糟糕。hgignore多行正則表達式

syntax: regexp 
^(?!(
    app/code/local/Mage/Myreviews/| 
    app/design/frontend/default/default/layout/myreviews\.xml| 
    app/design/frontend/default/default/template/myreviews/| 
    app/etc/modules/Mage_Myreviews\.xml| 
    skin/frontend/default/default/css/myreviews/| 
    skin/frontend/default/default/myreviews/| 
    js/myreviews/ 
)).* 
+0

嗯,類似'.hginclude' ...我不認爲有更好的方法比做單線正則表達式。 – Lucero

+0

@Lucero什麼是'.hginclude'?它是否是mercurial或模塊的標準部分? – grisevg

+0

這只是我爲你想要做的事而編造的一個名字。默認情況下,Mercurial是「退出」 - 它需要被告知需要忽略的內容。您想要的是以選擇加入的方式使用它,例如,告訴它包含什麼。我不知道這樣的功能。 – Lucero

回答

3

至於規範回答您的問題,是否支持多行正則表達式?不需要。請參閱ignore.py中的ignorepats函數mercurial Python包—它會逐個遍歷文件中的行。

至於你應該做什麼,而不是@ jk。的答案是好的(和你想出的glob: *)。

3

您可以將文件添加到資料庫,並跟蹤善變他們,即使他們匹配忽略規則,所以平時做這樣的事情最好的辦法就是置之不理有點吃不消例如(不知道磁模塊任何所以這可能是錯誤的)

syntax: glob 
app/* 
skin/* 
js/myreviews/* 

,然後明確hg add你想要的文件。

喬爾指出hg add小號--include--exclude選項也可在這些情況下

先發制人的附加信息:hg forget將撤消跟蹤文件,而不刪除它

+2

+1:在你認爲你必須單獨添加每一個之前,'hg add'有'--include'和'--exclude'接受模式。使用'--dry-run'來測試它們(向您顯示它將使用這些模式添加的內容)。 –

+0

也許然後'語法:glob *'? – grisevg

+0

確定你可以做到這一點,這將意味着無視所有事情,除非我明確告訴你跟蹤 –