- .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
Commit .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
, где они разместят свои локальные настройки. И ваш скрипт будет local.cfg
, если он присутствует: локальные настройки переопределяют глобальные. Конечно, добавьте строку к .hgignore
, чтобы игнорировать local.cfg
;)
Альтернатива: нет глобального конфигурационного файла, только config.example
, который пользователи копируют и изменяют локально. Дело в том, что вы не будете легко отслеживать изменения между версиями.