Mercurial: как объединить изменения в файл, переименованный в другой ветке?

У меня есть репозиторий 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) выбранным?

6
задан Jesse McGrew 27 October 2010 в 19:21
поделиться