Mercurial hg Subrepository Problem - "abort: unknown revision"

Примечание. Вчера я спросил об этом kiln.stackexchange.com, но не получил ответа, и он поднял мою работу. Поэтому я подумал, что я бы сделал здесь выстрел.

В моем основном ртутном хранилище есть куча субрепозитов. Во время начальной настройки я допустил ошибку в моем .hgsub. А именно, я указал две подпозиции в один и тот же каталог.

Что я должен был иметь:

sites/1=sites/1
sites/2=sites/2
sites/3=sites/3

Что я на самом деле имел:

sites/1=sites/1
sites/2=sites/2
sites/2=sites/3

Глупое копирование/вставка. Я совершил неправильный .hgsub, не осознавая свою ошибку. Несколько изменений позже, добавив несколько новых подпозиций к .hgsub, я заметил ошибку и зафиксировал ее внутри .hgsub. Я совершил и продолжал кататься. Я выполнил разумную работу, которую я бы предпочел не повторять, поскольку "исправил" ошибку в .hgsub.

Теперь мы приходим к фактической проблеме: я внедрил некоторые изменения внутри subrepository sites/3, и когда я пытаюсь зафиксировать основной репозиторий, я получаю следующую ошибку:

abort: unknown revision 'LongGUIDLookingString'

Я нашел это обсуждение, которое, похоже, касается той же самой проблемы, с которой я сталкиваюсь, но я не могу понять, как исправлено бос Это. Что мне нужно сделать, чтобы исправить это?

Соответствующий раздел .hgsubstate:

7d1e430ac5f12e00cb5bebcdf693e72db2c45732 sites/1
6eea936a5b7cfff6169f59d0dc1c8c4eb5f8412d sites/2
e2b83b301997de8add1b659d82a7ab8201bda653 sites/3

Ответ 1

Я бы предположил, что файл .hgsubstate теперь содержит hashid (это то, что является вашим LongGUIDLookingString) из repo3 в записи repo2.

Попробуйте отредактировать .hgsubstate, чтобы указать правильный/текущий хешид для каждого репо.

Если это не сработает, вставьте файл .hgsubstate, чтобы мы могли увидеть, как его можно настроить.