2012-05-07 124 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_。 –

相关问题