Как правильно избежать искажения shamap при конвертации ртутных репозиториев? - PullRequest
1 голос
/ 15 сентября 2010

Я пытаюсь создать обрезанное хранилище Mercurial из более крупного хранилища, и мне нужно получить изменения из нескольких веток. Я хочу использовать hg convert, но получаю сообщения об ошибках типа

прервать: неизвестная ревизия '81b79760e1350d185dbf645ab67633eda9d52ada'!

при попытке использовать convert для получения изменений из связанной ветки. Вот что я сделал. Я начал с mybranch и использовал

hg convert --filemap filemap mybranch mybranch_converted

Затем, чтобы зафиксировать любые изменения в парном преобразованном вниз хранилище из anotherbranch (у которого общий предок с mybranch ), я вызвал

hg convert --filemap filemap anotherbranch mybranch_converted

, но это не с ошибкой сброса, как показано выше.

Я понял, что это указывает на то, что файл shamap , созданный при первом преобразовании, как-то не работает, так что мне делать, чтобы создать хороший файл shamap ? Мне также было бы интересно узнать, что может вызвать сбой этого процесса, учитывая, что он настолько прост. Кроме того, поскольку это может иметь значение, я должен отметить, что предок mybranch и anotherbranch сам был создан путем преобразования еще одного хранилища Mercurial.

1 Ответ

2 голосов
/ 15 сентября 2010

Я думаю, что в сообщении говорится, что у одного из наборов изменений, которые вы извлекаете, есть родитель, чей идентификатор узла не отображается в целевом репо - и не отображается, потому что ваше первоначальное преобразование изменило nodeids.

Вместо того, чтобы делать два преобразования, вы должны выполнить два вытягивания и одно преобразование следующим образом:

hg init both_unconverted
hg -R both_unconverted pull ../mybranch
hg -R both_unconverted pull ../anotherbranch
hg convert --filemap myfilemap both_unconverted both_converted

Таким образом, вы не пытаетесь привить новую ветвь к уже измененным наборам изменений.

Возможно, вы могли бы заставить свой маршрут работать с --splicemap, но я не уверен, и приведенное выше предложение делает то же самое проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...