У меня есть репозиторий Mercurial с четырьмя ветвями. Одна - это «общая» ветвь, остальные три - «особые» ветки, которые состоят из некоторых косметических изменений, примененных к общей ветке. Одно из этих косметических изменений состояло в переименовании некоторых файлов.
Итак, общая ветвь имеет «file.txt», а первая конкретная ветвь имеет «file-01.txt», который тот же файл, используется для той же цели , но имеет другое имя и немного другое содержимое. Он был переименован в file-01.txt в конкретной ветке, и "hg log -f file-01.txt" правильно показывает историю, возвращающуюся до переименования.
Когда я вношу изменения в file.txt на общей ветке, мне нужно иметь возможность объединить это изменение в file-01.txt в конкретной ветке. Но Mercurial не понимает, что это одинаковые файлы. Он сообщает мне:
удаленный измененный файл.txt, который локально удален
, использовать (c) зависшую версию или оставить (d) выбранным?
Если я выберу «c», я получу новый файл file.txt, содержащий точно что в общей версии ветки. Если я выберу «d», то изменение вообще не будет объединено.
Что я могу сделать, чтобы сделать это правильно?
РЕДАКТИРОВАТЬ: Я могу заставить его работать правильно в новом тестовом репозитории, но не мое фактическое репо. Вот что я получаю (обратите внимание, что версия 118 находится в конкретной ветке, непосредственно перед исходным переименованием, поэтому я снова прохожу процесс переименования, чтобы проиллюстрировать):
C: \ ...> hg update -C 118
0 файлов обновлено, 0 файлов объединено, 0 файлов удалено, 0 файлов не решено
C: \ ...> hg merge default
объединение file.txt
слияние anotherfile.txt
0 файлов обновлено, 2 файла объединено, 0 файлов удалено, 0 файлов не решено
(слияние веток, не забудьте зафиксировать)
Так работает без переименования. Но если я переименую, ничего не получится:
C: \ ...> hg update -C 118
2 файла обновлены, 0 файлов объединено, 0 файлов удалено, 0 файлов разрешено
C: \ ... > hg переименовать file.txt file-01.txt
C: \ ...> hg commit -m "переименовано"создал новую голову
C: \ ...> hg merge default
удаленно измененный файл file.txt который локально удален
использовать (c) зависшую версию или оставить (d) выбранную?
РЕДАКТИРОВАТЬ 2: Вот что я получил на последнем шаге из hg merge --debug default
:
поиск копий обратно на rev 115
несовпадающие файлы в локальном:
file-01.txt
найдены все копии (* = объединить,! = расходящиеся):
file-01.txt -> file.txtпроверка переименований каталогов
разрешение манифестов
перезаписать Нет частичное Ложь
предок 9d979018c2df локальный f842fdbc252b + удаленный 05fc75e480da
anotherfile.txt: разные версии -> m
удаленный изменил file.txt, который локально удалил
использовать (c) зависшую версию или оставить (d) выбранным?