Я думаю, что вы неправильно прочитали hgbook. Вступление к разделу 7.7 просто описывает три различных типа чувствительности к регистру, которые существуют в ОС, не говоря о том, что Mercurial будет отражать эту семантику.
Позже в разделе 7.7.2 «Обнаружение конфликтов случаев» говорится:
при работе в рабочем
справочник, Mercurial чтит
политика именования файловой системы, где
рабочий каталог находится. Если
файловая система сохраняет регистр, но
нечувствительный, Mercurial будет лечить
имена, которые отличаются только в том случае, если
то же самое.
Когда вы делаете hg status -A FOO
процесс, который происходит в Mercurial:
- Проверьте, существует ли файл в файловой системе, совпадающий с аргументом файла 'FOO', - и в этот момент он нечувствителен к регистру, поэтому он находит 'foo' и говорит: «У меня есть файл»
- Проверьте, есть ли в манифесте файла запись, соответствующая аргументу файла 'FOO', и ее нет, поэтому статус показывает '?' говоря, что это файл на диске, который hg не отслеживает
Чтобы лучше увидеть, что Mercurial не заботится о случае в NTFS, попробуйте выполнить следующие действия:
- рт.ст. init
- эхо-линия> Foo
- рт.ст. добавить Foo
- hg commit -m 'commit Foo'
- переместить Фу не-фу
- двигаться не-фу FOO
- статус ртутного столба
и вы должны увидеть, что hg говорит, что ничего не изменилось, потому что единственное, что изменилось, это случай, который hg игнорирует для вас.
Когда я делаю то же самое в Linux, я вместо этого вижу:
! Foo
? FOO