Меркуриальное HG случайное сгибание столкновений?
- Сначала у меня есть имя файла readme
- затем я меняю его на README
- совершить
- толчок
ok проблема в том, что есть два файла: readme и README
как удалить readme в репозитории?
когда я обновляю, я получаю эту ошибку
abort: случайное сгибание столкновений между readme и README
Ответы
Ответ 1
Mercurial может обрабатывать имена файлов в том же каталоге, которые отличаются только в своем случае в своих хранилищах (каталог .hg
на верхнем уровне вашего репо). В случае файловых систем, чувствительных к регистру (в большинстве случаев в unix), он может обрабатывать эти файлы и в рабочем каталоге. Тем не менее, в системах, которые просто сохраняют регистр, ОС не позволяет вам иметь два файла в одном каталоге, которые отличаются только случаем, и Mercurial предупреждает вас об этом (как вы видели).
Чтобы обойти это ограничение вашей ОС, проверьте свой клон на файловой системе, чувствительной к регистру, удалите файл, а затем совершите/нажмите. До тех пор, пока люди Windows не будут hg updating
к ревизии, у которой есть столкновение, они будут в порядке (так как это нормально в репозитории, а не в их рабочем каталоге).
Ответ 2
Этот вопрос является дубликатом и может быть сложен в Разрешение меркуриального случайного сгибания в Windows
Я согласен с комментарием, что просить кого-то работать в файловой системе, чувствительной к регистру, немного тяжело, даже с Cygwin. Самое чистое решение, предполагающее два файла и похоже:
- hg вернуться к заголовку ветки, которая будет объединена с
- hg remove//затем commit и т.д.
- проверьте историю файлов. Возможно, что некоторые дополнения были неправильно внесены в переименованный файл
- Если это так, вручную добавьте эти изменения в
Ответ 3
Предположим, что readme должен быть README.
hg mv readme foofile
hg mv foofile README
Сделайте это и выполните эти изменения, и репо должно быть снова использовано.
Ответ 4
Если это было переименование, то вроде abc.txt переместился в Abc.txt
Будут ли следующие работы?
Возьмите патч,
Проверьте код свежий,
Примените патч поверх него.
затем совершите n push
Ответ 5
У меня была эта проблема, когда случай-столкновение происходило, когда я выполнял Update
для конкретной ревизии. Данная ревизия была выполнена специально для решения проблемы случайного столкновения, когда я переименовал файл. К сожалению, Mercurial не позволил мне вернуться к пересмотру.
Тем не менее, я мог бы Update
пересматривать до и после него. Поэтому, если вы столкнулись с этой проблемой в Windows (или подобной файловой системе без учета регистра), а просто Update
к определенной ревизии, вы можете обойти проблему с версией Update
до одного до или после нее.