Я пытаюсь очистить репозиторий, используя hg convert --filemap
. Преобразование отлично работает с любым параметром в карте файла, кроме rename
. Если я добавлю какую-либо опцию rename
в карту файлов, она выйдет из строя при первом слиянии с abort: unable to convert merge commit since target parents do not merge cleanly
.
Я попытался добавить в карту файла только фиктивный параметр rename foo bar
(ни один из путей foo или bar фактически не существует в репозитории) и получил тот же результат.
Я попытался ввести настоящее переименование (существующий 1-й путь), происходит то же самое. Как только туда попадает любое переименование, оно ломается.
Это ошибка? Что я делаю неправильно?
ОБНОВЛЕНИЕ: Чтобы воспроизвести:
Создай файл a
, напиши в него что-нибудь, зафиксируй. Обновите до родителя, напишите что-нибудь еще в a
, зафиксируйте. Слить с другой головой, исправить конфликт вручную.
Filemap состоит из одной строки и только одной строки: rename foo bar
. Выполнить hg convert
. Это не удастся, если фиксация не может быть автоматически объединена.
rename foo bar
- person Dinu   schedule 18.08.2019rename
. Так что это не редкость и воспроизводимо на 100%. Создайте файлa
, напишите в нем что-то, зафиксируйте. Обновите до родителя, напишите что-то еще вa
, зафиксируйте. Слейте с другой головой, устранить конфликт вручную. Запуститеhg convert
сrename foo bar
. Произойдет сбой. Любая директива переименования приведет к повторному выполнению всех слияний в преобразовании. Любое переименование. Все слияния. Слияние, которое не может быть разрешено автоматически, завершится ошибкой. Всегда. Каждый раз. - person Dinu   schedule 19.08.2019