如何将.hgignore模式应用于子目录?

GJ.*_*GJ. 7 mercurial

我的.hgignore中有"*.pyc"模式

.pyc文件确实在根级别被忽略,但不在子目录内.

有任何想法吗?

Sam*_*war 7

使用glob语法(放在syntax: glob文件的顶部),它应该工作.默认情况下,Mercurial默认为正则表达式.

syntax: glob

*.pyc
Run Code Online (Sandbox Code Playgroud)

  • 我已经尝试过了,我仍然会在我的"hg st"中出现.pyc文件.知道什么可能是错的吗? (3认同)

Nic*_*zet 7

默认情况下,模式是python正则表达式.在路径的每个组件中搜索表达式.所以你可能想要\.pyc$匹配以.pyc结尾的文件

$ hg init test-ignore
$ cd test-ignore 
$ touch foo.pyc
$ mkdir bar 
$ touch bar/bar.pyc
$ echo "\.pyc$" > .hgignore
$ hg st        
? .hgignore
Run Code Online (Sandbox Code Playgroud)

请注意,".pyc $"将忽略"foopyc",因为未转义的点匹配任何字符.类似地,".pyc"将匹配"foo.pyche.bar"

如果您不喜欢正则表达式语法,则可以切换到全局变量.例如,Mercurial存储库中的当前.hgignore以:

syntax: glob

*.elc
*.orig
*.rej
*~
*.mergebackup
*.o
*.so
*.pyd
*.pyc
*.swp
*.prof
\#*\#
.\#*
Run Code Online (Sandbox Code Playgroud)

一切都在男人5 hgignore中解释

  • 如果已经跟踪/添加了文件到存储库,则不会忽略它.可能是那个吗? (7认同)