Ответ 1
Синтаксис, используемый в файлах игнорирования, отличается от системы к системе:
-
Список регулярных выражений Mercurial: может быть изменен с помощью строки
syntax: glob
. -
Базар: список шаблонов оболочки оболочки - префикс с
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
файл.