Ответ 1
- .hgignore не нужно создавать до init
- Этот конфигурационный файл будет использоваться другими, вам лучше зафиксировать .hgignore, чтобы другим не приходилось его создавать, но это не нужно для того, чтобы mercurial игнорировал ваши локальные файлы (см. пример).
- Да .hgignore должен находиться в корневом каталоге
Простой пример.
Инициировать репо:
$ mkdir test
$ cd test
$ hg init
Создать файл
$ touch foo
$ hg st
? foo
Теперь создайте .hgignore в корневом каталоге вашего репо:
$ echo 'foo' > .hgignore
foo
теперь игнорируется:
$ hg st
? .hgignore
Обратите внимание, что для этого не требуется выполнение .hgignore.
Немного сложнее
Если в репозитории зафиксированы как файл конфигурации, так и .hgignore(игнорируется файл конфигурации), тогда да, будут отслеживаться изменения файла конфигурации (другими словами,.hgignore не будет иметь эффекта)
Создание конфигурации и фиксация ее
$ touch config
$ hg ci config -Am 'adding conf'
Игнорировать:
$ echo 'config' >> .hgignore
Зафиксировать .hgignore:
$ hg ci .hgignore -Am '.hgignore'
Затем, если вы клонируете репо:
$ cd ..
$ hg clone test other-user
$ cd other-user
и измените конфигурацию:
$ echo 'new config param' >> config
то hg покажет изменения:
$ hg st
M config
Как справиться с этим?
Вероятно, вы захотите, чтобы в репозитории был установлен основной файл конфигурации по умолчанию, то есть версия, global.cfg
И вы попросите пользователей создать local.cfg
, где они будут размещать свои локальные настройки. И ваш script будет источник local.cfg
, если он присутствует: локальные настройки переопределяют глобальные. Конечно, добавьте строку в .hgignore
, чтобы игнорировать local.cfg
;)
Альтернатива: нет глобального файла конфигурации, только config.example
, который пользователи копируют и изменяют локально. Кон таким образом вы не будете легко отслеживать изменения между версиями.