如何让Mercurial忽略除* .cs文件以外的所有内容?

时间:2009-08-27 03:10:41

标签: svn version-control mercurial tortoisehg hgignore

我开始了一个项目并将其添加到Mercurial。但是我想仅在版本控制下使用*.cs文件。所以我必须添加binobjslnsuo_resharper文件夹等来忽略模式。

如何让Hg只监视某些类型的文件,如白名单?如何在Subversion中做到这一点?

3 个答案:

答案 0 :(得分:8)

只需在您遇到.hgignore文件时添加扩展程序:

syntax: glob
*.bin
*.obj

等等。这不是很多工作,它向世界其他地方记录了您认为对于版本控制不重要的文件类型。

您甚至可以设置全局忽略文件,请参阅ignore entry in the [ui] section

试图通过使用负前瞻正则表达式和其他巫术来颠倒.hgignore是(在我看来)并不是一个好主意。它几乎肯定不会起作用,只会导致混乱。这是因为hg匹配给定路径名称的所有前缀与rules in .hgignore。所以像

这样的文件
a/b/c.cs
如果有任何

将被忽略

a/b/c.cs
a/b
a

.hgignore文件中的规则匹配。特别是,这意味着您无法使用否定前瞻表达式使a/b/c.cs不被忽略 - 规则将匹配a/ba

答案 1 :(得分:1)

关于Martin Geisler(https://www.mercurial-scm.org/bts/issue712)提供的Mercurial问题的链接,请注意该问题不是技术难题,而是支持:

  

这是一个古老且反复出现的特征请求,我拒绝了   在此错误创建之前。我写了并支持了一对   包含/排除文件语法,并决定我宁愿说“不,你   不能这样做“曾经有1%的用户比”不,你正在阅读文档错误“   反复给20%的用户。 -Matt Mackall(Mercurial的开发者)

答案 2 :(得分:-2)

使用这些内容将名为.hgignore的文件添加到您的存储库。

syntax: regexp

^\.cs

Subversion不允许您使用正则表达式忽略文件,只使用glob syntax的子集来匹配文件/目录名称。我不知道如何使忽略文件不以.cs结尾,所以我在网上搜索并this webpage说:

svn propset svn:ignore "*[!c][!s]
*.cs?*" .

谨慎使用:)

编辑:Martin Geisler是对的,我错了,正则表达式语法错了。我道歉。正确的概念是存在但不是元字符...... :(