Синтаксис, используемый в файлах игнорирования, отличается от системы к системе:
Mercurial: список регулярных выражений - можно изменить с помощью syntax: glob
line.
Bazaar: список шаблонов глобуса оболочки - с префиксом RE:
в качестве регулярного выражения.
Git: список шаблонов глобуса оболочки.
Кроме того, точные правила соответствия шаблонов оболочки и регулярных выражений отличаются от инструмента к инструменту.В общем, это означает, что вы можете надеяться использовать этот трюк только в том случае, если ваш глобальный файл игнорирования довольно прост.В противном случае, как вы говорите, различия могут прийти и укусить вас.
Я проверил это с помощью этого файла:
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
файлу.