case folding collision between” в Mercurial под Windows

У Mer­cu­r­ial под Win­dows есть неприятная особенность — если переименовать файл проекта, изменив в нём только регистр одного из символов, то рухнет всё. Mer­cu­r­ial, как дитя Unix-а, считает, что разные регистры — это разные файлы, а вот для Win­dows это параллельно. В результате — ошибка “case fold­ing col­li­sion between” и полный обвал репозитория: даже если удалить зловредный файл, чтобы сделать push, надо сначала сделать pull, а pull не проходит из-за конфликта имён.

Можно посмотреть, что советуют на официальном сайте. Но эти советы не всегда помогают (мне не помогли).

В конце концов, нашёлся хакерский вариант. Только не забудьте сделать резервную копию.

hg pull
# ревизия из репозитория, можно посмотреть в Tortoise
hg debugsetparents <bad revision>
hg debugrebuildstate
hg rm -A -f WeatherTimeMachine-Info.plist
hg ci -m "fixed collision-folding issue"
hg debugsetparents tip
hg debugrebuildstate
hg ci -m "fixed head"
hg push