Как уже упоминалось, вы можете сделать это. Примером того, почему вы можете захотеть, является своего рода «драйвер». Вы можете передать обратно структуру, содержащую функции open, close, read и write, не делая общедоступными фактические функции.
Инициировать репо:
$ 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
, в котором они будут помещать свои локальные настройки. И ваш сценарий будет источником local.cfg
, если он присутствует: локальные настройки имеют приоритет над глобальными. Конечно, добавьте строку в . hgignore
, чтобы игнорировать local.cfg
;)
Альтернатива: нет глобального файла конфигурации, только config.example
, который пользователи копируют и изменяют локально. Минус в том, что вам будет нелегко отслеживать изменения между версиями.
Добавьте сам файл .hgignore в файл .hgignore:
syntax: glob
.hgignore
или просто проверьте файл .hgignore в своем локальном клоне ...
Даже если вы проигнорировали файлы, Mercurial будет отслеживать их после того, как они были добавлены в репозиторий.
Чтобы удалить ваш файл конфигурации из репозитория, вы можете использовать
hg remove -Af file.cfg
Это будет удалите файл из репозитория (после фиксации), не удаляя локальный файл. См. hg help remove
Однако теперь в репо записано удаление, и Mercurial удалит этот файл, когда вы или кто-либо другой обновит эту ревизию .
Вы также можете переименуйте его и попросите людей скопировать мастер в свой локальный файл, но вам нужно будет координировать обновления локального файла.
hg rename file.cfg file.cfg.example