Могу ли я восстановить связь Perforce/Mercurial после прерванного клона Perfarce?
У меня возникла проблема с расширением Perfarce, которую я никак не могу обойти. Первоначально я клонировал часть своего депо P4:
hg clone --startrev 71555 p4://perforce:1666/greg_nt_main-hg lwnthg
Я выбрал стартовый рев, который был всего лишь несколькими списками изменений за текущей ревизией головы - попытка полного клона без стартарева не сработала, но это отдельная проблема, о которой я, возможно, напишу отдельно.
Во время клона я получил следующую ошибку:
"abort:untracked file in working directory differs from requested revision on 'MAIN/apps/Win32/BenchMark/Jamfile'”
Однако при проверке того, что появилось на моем диске, выяснилось, что все файлы на самом деле были успешно клонированы. Упомянутый файл был идентичен файлу в Peforce, и папка lwnthg была пуста до процесса клонирования. "Статус hg" показывает множество файлов, которые еще не были переданы - я думаю, потому что клон прерван? Так что я их совершил, и все выглядело великолепно.
Я внес некоторые изменения в свои файлы, без проблем поместил их в локальный репозиторий. Я наслаждался прелестью Mercurial;)
Но когда я вернулся, чтобы перенести свои изменения обратно в Perforce, я получил следующую ошибку:
abort: no p4 changelist revision found
Я подтвердил, что у меня есть действующий билет для входа в P4, P4 был активен и т. Д., И все в порядке.
Так что я предполагаю, что Perfarce хранит где-то список изменений, к которому он последний раз синхронизировался с P4, и первый прерывание произошло до того, как эта информация была записана. Если я пытаюсь выполнить операцию извлечения из P4, я также получаю ту же ошибку. Если предположить, что моя теория верна, есть ли способ восстановить эту информацию в локальной конфигурации Perfarce?
ПРИМЕЧАНИЕ "Perfarce" НЕ является опечаткой. Это имя расширения Mercurial для ссылки на Perforce. Вопрос теряет некоторое значение, если вы измените его на "Perforce". Благодарим за помощь в попытках прояснить вопрос, но всегда стоит сначала проверить факты:)
1 ответ
Чтобы ответить на мой собственный вопрос, ответ, как представляется, нет.
Я еще немного покопался и связался с первоначальным автором - Фрэнком Кингсвудом - и решение состоит в том, чтобы в первую очередь обеспечить импорт вашего склада без ошибок. Как только это будет сделано, Perfarce станет абсолютным удовольствием.
Первоначальное прерывание импорта было связано с моим использованием. После выполнения различных инструкций, найденных в других местах, включая переполнение стека, я пытался использовать параметр назначения hg clone, чтобы получить правильное имя репо. Но похоже, что успех импорта чувствителен к взаимодействию между корнем спецификации клиента Perforce и папкой назначения, указанной в качестве последнего аргумента hg clone.
В основном, убедитесь, что эти папки не перекрываются.
В зависимости от файлов в Perforce, это может сработать, если у вас есть совпадение, но вы можете настроить себя на кучу неприятностей в будущем.
Рекомендуется хранить папки отдельно. Моя проблема заключалась в том, что я не хотел принимать имя папки по умолчанию для папки hg в качестве имени спецификации клиента Perforce, что и происходит, если вы не указали папку назначения. Но, возможно, из-за ошибки, если вы указали папку назначения, то она должна соответствовать корню спецификации клиента. Из-за этого поведения я предположил, что папки на самом деле должны быть одинаковыми.
В Mercurial безопасно переименовывать папку верхнего уровня после создания репо. Так что, если вы не хотите, чтобы имя диктовалось именем спецификации клиента Perforce, вы можете просто переименовать ее после этого. Это подход, который я выбрал.
Надеюсь, что это помогает другим, пытающимся погрузить пальцы ног в ртутные воды.
Обновление Фрэнк обновил расширение Perfarce, чтобы лучше ловить это дело. Получите последние новости из репозитория Perfarce.