Могу ли я восстановить связь Perforce / Mercurial после прерванного клона Perfarce? - PullRequest
5 голосов
/ 21 марта 2011

У меня возникла проблема с расширением 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 Ответ

1 голос
/ 22 марта 2011

Чтобы ответить на мой собственный вопрос, ответ, кажется, будет нет.

Я провел еще несколько копаний и связался с первоначальным автором - Фрэнком Кингсвудом - и решение состоит в том, чтобы обеспечить импорт вашего депобез ошибок в первую очередь.Как только это будет сделано, Perfarce станет абсолютным удовольствием.

Первоначальное прерывание импорта было связано с моим использованием.После выполнения различных инструкций, найденных в других местах, включая переполнение стека, я пытался использовать параметр назначения hg clone, чтобы получить правильное имя репо.Но похоже, что успех импорта чувствителен к взаимодействию между корневым каталогом спецификации клиента Perforce и папкой назначения, указанной в качестве последнего аргумента hg clone.

По сути, убедитесь, что эти папки неперекрытие.

В зависимости от файлов в Perforce, оно может работать, если у вас есть перекрытие, но вы можете настроить себя на кучу неприятностей в будущем.

Рекомендуется хранить папки отдельно.Моя проблема заключалась в том, что я не хотел принимать имя папки по умолчанию для папки hg в качестве имени спецификации клиента Perforce, что и происходит, если вы не указали папку назначения.Но, возможно, из-за ошибки, если вы укажете папку назначения, то у нее будет , чтобы соответствовать корню спецификации клиента.Из-за этого поведения я предположил, что папки фактически должны быть одинаковыми.

В Mercurial безопасно переименовывать папку верхнего уровня после создания репо.Так что, если вы не хотите, чтобы имя диктовалось именем спецификации клиента Perforce, вы можете просто переименовать ее после этого.Это подход, который я выбрал.

Надеюсь, это поможет другим, пытающимся погрузить свои пальцы в ртутные воды.

Обновление Фрэнк обновил расширение Perfarce, чтобы лучше ловить этот случай,Получить последнюю версию из Perfarce репозитория .

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