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

pri*_*e23 8 svn version-control mercurial tortoisehg hgignore

我开始了一个项目并将其添加到Mercurial.但我只想*.cs在版本控制下获取文件.所以我要补充bin,obj,sln,suo,_resharper文件夹等,以忽略模式.

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

Mar*_*ler 8

只需在.hgignore遇到它们时将扩展名添加到文件中:

syntax: glob
*.bin
*.obj
Run Code Online (Sandbox Code Playgroud)

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

您甚至可以设置全局忽略文件,请参阅ignore[ui]节中条目.

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

a/b/c.cs
Run Code Online (Sandbox Code Playgroud)

将被忽略,如果有的话

a/b/c.cs
a/b
a
Run Code Online (Sandbox Code Playgroud)

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