忽略文件中使用的语法因系统而异:
此外,shell 模式和正则表达式如何匹配的确切规则因工具而异。总而言之,这意味着如果你的全局忽略文件非常简单,你只能希望使用这个技巧。否则,正如你所说,差异会来咬你。
我用这个文件测试了它:
syntax: glob
.bzr
.git
.hg
*.o
*~
它似乎在所有三个工具中都按预期工作。为了测试它,我创建了这个目录树:
$ tree
.
|-- foo.c
|-- foo.c.~1~
|-- foo.h
|-- foo.o
`-- src
|-- bar.c
|-- bar.c.~1~
`-- bar.o
并为每个工具运行状态命令:
$ for tool in hg git bzr; do echo "== $tool status =="; $tool status; done
== hg status ==
? foo.c
? foo.h
? src/bar.c
== git status ==
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo.c
# foo.h
# src/
nothing added to commit but untracked files present (use "git add" to track)
== bzr status ==
unknown:
foo.c
foo.h
src/
如您所见,这个简单的文件可以正常工作。
从技术上讲,Git 和 Bazaar 现在将忽略一个名为 的文件syntax: glob
,但除非您打算创建一个具有该怪异名称的文件,否则这无关紧要。最后,请注意 Mercurial 默认不读取$HOME/.hgignore
文件。但是您可以通过添加使其读取它
[ui]
ignore.my-default = ~/.hgignore
到你的$HOME/.hgrc
文件。