Принудительно заставить Perforce принять представление рабочего пространства как действительное - PullRequest
3 голосов
/ 06 апреля 2011

У меня есть несколько файлов с изменениями, готовыми к отправке.

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

У меня также не были проверены некоторые файлы, которые я не был готов добавить в списки изменений, поэтому я переименовал структуру каталогов внизу, а затем синхронизировал все нужные мне ветви и затем переименовалкаталог в AltBranch и переименованный старый обратно.

Теперь, однако, все извлеченные файлы перечислены как "не сопоставленные с представлением рабочей области" - однако они все еще там.

Я хотелзаставить перформанс согласиться с моей версией, поэтому я попытался p4 sync -k, однако я получаю ошибку

//.../X.cpp#10 - is opened for edit and can't be deleted

Затем я попытался p4 sync -k -f, но я получаю ошибку

//.../X.cpp#10 - refreshing C:\Work\...\X.cpp
//.../X.cpp#10 - is opened for edit and can't be deleted

В целом, мне действительно нравится Perforce, однако настойчивость в том, чтобы всегда знать лучшее, расстраивает

Ответы [ 4 ]

1 голос
/ 12 апреля 2011

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

Это решение специфично для Windows / DOS - хотя я думаю, что другие командные оболочки могут выполнять синтаксический анализ, необходимый для этого исправления:

 @ echo off
 echo Please Exit Perforce
 pause
 setlocal
 rem Retrieve depot spec format of file
 for /f "delims=# " %%d in ('p4 files %1') do set p4name=%%d
 rem Retrieve current pending changelist
 for /f "tokens=5 delims= " %%d in ('p4 opened %p4name%') do set change=%%d
 p4 revert -k %p4name%
 p4 sync -k %p4name%
 p4 edit -c %change% %1

Эта версия относится к файлам, хотя возможна версия каталога, заменяющая files вместо dirs

Также глупо, что командная строка не устанавливает ERRORLEVEL, если команда в тиках не выполняется.

1 голос
/ 06 апреля 2011

Гораздо проще перестроить сопоставление клиента, если у вас нет извлеченных файлов. У вас есть спецпарк? Если это так, вы можете легко вернуться к предыдущей версии определения вашего клиента, восстановив его из хранилища спецификаций. Затем отправьте или отложите файлы, чтобы вы могли добраться до точки, где у вас нет открытых файлов в рабочей области. Затем вы можете изменить порядок сопоставления клиентов и поэкспериментировать с различными макетами, и Perforce с радостью переупорядочит файлы на вашем диске, не сталкиваясь с проблемами с открытыми файлами.

0 голосов
/ 07 апреля 2011

У меня было «не сопоставлено с представлением рабочей области», и оказалось, что в моей спецификации клиента / рабочей области было два сопоставления, которые нужно было изменить.

bad:

//B/foo/... //mySpec/foo/...
//A/... //mySpec/...

хорошо:

//A/... //mySpec/...
//B/foo/... //mySpec/foo/...
0 голосов
/ 06 апреля 2011

Я думаю, что вы можете сделать p4 reopen <changelist>, и он должен вернуться к нормальной жизни.

...