2012-05-07 71 views
2

我知道Hg的忽略是有用的,但有沒有一種方法可以指定我關心的文件,而忽略其餘的, 例如。有沒有辦法選擇我想要的內容,而不是忽略我不想要的內容

如果我在回購中有a.c, a.h, a.o, a.exe, a.err,有沒有一種方法可以告訴Hg,我只想保留*.c *.h,並且忽略列表中的所有內容。

+0

似乎與白名單相似,就像在http://stackoverflow.com/questions/1512058/hgignore-help-ignoring-all-files-but-certain-ones但Ry4an不會很高興:http:///stackoverflow.com/a/10434978/6309 – VonC

回答

3

嘿,@ vonC是對的,我不能讓這個過去。沒有辦法將hgignore變成白名單而不是黑名單。我通過設計收集它(我當然沒有設計它)。

您有幾種選擇:

  1. 添加一切.*)到您的.hgignore,然後你想跟蹤hg add文件 - 添加始終覆蓋忽略

  2. 就壞了並創建一個合適的黑名單:hg status --no-status --unknown >> .hgignore是一個很好的起點。

底線是意外跟蹤你不想跟蹤的事情,而不是意外地忘記跟蹤你希望跟蹤的事情。前者會在您的回購中產生一點噪音,而後者會導致潛在的數據丟失。

如果你真的想獲得看上你可以添加「.*」你.hgignore,然後創建一個這樣的鉤子:

[hooks] 
precommit.add = hg add $(hg status --unknown --no-status -I '**.c' -I '**.h') 

這將自動添加任何新的.c和當您提交.h文件。

+0

是'[hooks]'插件是爲hg嗎? – shengy

+0

btw,'* .c'和'**。c'有什麼區別,儘管這是另一個問題:) – shengy

+0

不,鉤子是內置功能。試試man hgrc或者閱讀Mercurial書的第10章來獲得解釋。 **。c在所有路徑中包含* .c。簡而言之,'*'匹配除斜槓之外的任何內容,'**'匹配_anything_。 –

相關問題