我开始了一个项目并将其添加到Mercurial。但是我想仅在版本控制下使用*.cs
文件。所以我必须添加bin
,obj
,sln
,suo
,_resharper
文件夹等来忽略模式。
如何让Hg只监视某些类型的文件,如白名单?如何在Subversion中做到这一点?
答案 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/b
或a
。
答案 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是对的,我错了,正则表达式语法错了。我道歉。正确的概念是存在但不是元字符...... :(