Mercurial hg ignore не работает должным образом

Ситуация

$ cat .hgignore
.hgignore

$ hg status
M file1
M file2
M src/project.xml

Я не хочу отслеживать project.xml, поэтому бегу

echo "project.xml" >> .hgignore

и результат

$ cat .hgignore
.hgignore
project.xml

$ hg status
M .hgignore
M file1
M file2
M src/project.xml

Таким образом, .hgignore теперь изменен, хотя его не следует отслеживать, и с project.xml ничего не произошло. Что это значит?


person user219882    schedule 29.03.2013    source источник
comment
Вы уверены, что src/project.xml еще не было в файлах, отслеживаемых hg?   -  person Atropo    schedule 29.03.2013
comment
@Atropo Это было ... Но я подумал, что поместив его в .hgignore, он удалит его оттуда.   -  person user219882    schedule 29.03.2013
comment
Возможно, вам поможет этот вопрос: Как чтобы остановить отслеживание файла, не удаляя его на mercurial.   -  person Atropo    schedule 29.03.2013


Ответы (1)


Вы написали:

"M src/project.xml"

что означает, что src/project.xml находится под контролем версий. Файл, уже находящийся под контролем версий, нельзя игнорировать! Файл .hgignore предназначен для игнорирования файлов, которые не отслеживаются (в статусе будет отображаться "?").

У вас есть два решения игнорировать ваш файл:

  1. Вы можете либо "hg forget" указать файл, что противоположно "hg add" (т. е. указать Mercurial больше не отслеживать этот файл), либо
  2. Вы можете использовать параметр «-X» по умолчанию для status/diff/commit в вашем файле конфигурации .hg/hgrc, например,

    [по умолчанию]
    статус = -X <file>
    diff = -X <file>
    commit = -X <file>

который скажет hg не включать этот файл в использование состояния, различий и фиксации.

person Christophe Muller    schedule 29.03.2013
comment
Я думаю, что hg forget определенно лучший вариант здесь. Система контроля версий не должна просто молча игнорировать измененный файл под контролем версий, это ПРИВЕДЕТ к проблемам в будущем, когда вы забудете об этом и ожидаете, что hg просто отследит изменения в файле, не задумываясь об этом. - person chris; 29.03.2013