2011-01-26 2 views
25

Я использую Perforce P4V, графический инструмент, чтобы взаимодействовать с моим сервером Perforce здесь, на работе. У меня есть проект, который я добавил в депо, и я случайно удалил его из своего рабочего пространства на своем локальном компьютере, проблема в том, что я использую Get Revision Action (эквивалент синхронизации графического интерфейса), файлы не обновляются, т.е. я могу см. файлы на сервере, которые я хочу, но они не будут корректно синхронизироваться с моим локальным ПК. Меня расстраивает то, что файлы не извлекаются с сервера. То, что я предполагаю, должно происходить, если файлы будут меняться в любом случае на моем локальном ПК, я должен уметь перехватывать ревизию с сервера, а затем вытаскивать данные на локальный ПК и перезаписывать изменения локально на моем ПК, но этого не происходит. Есть что-то, что мне не хватает?Perforce неправильно синхронизирует файлы

ответ

2

Спасибо, ребята, я сделал то, что вы предлагали, но я продолжал получать сообщение о том, что файлы все еще «открыты для редактирования и не могут быть удалены» при попытке «Удалить из рабочей области». Кроме того, «Get Revision» возвращается с сообщением о том, что «файлы не были обновлены». То, что мне в итоге пришлось сделать, это «Восстановить» файлы, а затем выполнить действие «Получить ревизию», которое решило проблему. Спасибо вам за помощь.

+7

Пожалуйста, не используйте ответы для комментариев. У вас есть репутация, оставьте комментарий (и). Взгляните на [это обсуждение] (http://meta.stackexchange.com/q/74194/4228). – raven

+1

@raven - не забывайте, что OP всегда может комментировать ответы на свои вопросы в любом случае. – ChrisF

10

Они не будут обновляться, потому что, согласно Perforce, у вас все еще есть файлы на вашей локальной машине.

Вам необходимо использовать опцию «Получить Revison ...» и включить опцию «Force Operation».

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

52

Perforce отслеживает файлы, которые, по его мнению, имеются на вашей локальной рабочей станции. Если вы удаляете эти файлы локально (и не «рассказываете» об этом), Perforce все равно будет думать, что у вас есть эти файлы. Если вы хотите вернуть их, вам нужно «принудительно синхронизировать» файлы. В p4v вы можете использовать элемент «Получить Revision ...», а в следующем диалоговом окне вы можете проверить флажок «принудительная операция», чтобы сообщить Perforce, чтобы он дал вам все файлы, независимо от того, считает ли Perforce, что они вам нужны.

Для полной информации, если вы когда-либо захотите удалить файлы локально, вы можете сделать это через p4v, выбрав пункт «Удалить из рабочего пространства». Это приведет к удалению файлов локально, а также сообщит, что у вас больше нет этих файлов, поэтому в следующий раз при синхронизации эти файлы будут извлекаться с сервера.

+1

Добавление к первому ответу - способ сделать это через интерфейс командной строки - это выполнить 'p4 sync -f' в файле или пути, который вы пытаетесь синхронизировать (как упоминалось ниже в @Greenish). –

+1

Даже с флагом силы часто не работает - что для меня нужно, чтобы вернуть локальные новые файлы, а затем принудительно синхронизировать –

8

«Получить ревизию» будет обновлять только файлы, которые не открываются (выгружены), даже если включена принудительная операция. Вы должны вернуть все файлы, отмеченные как отмеченные в этой рабочей области, а затем использовать «Get Revision» с «Force Operation».

+0

Почему perforce не позволяет пользователю получить ревизию для проверенных файлов? –

8

Как и другие люди, одним из решений является «силовая синхронизация» всего депо, которое в основном перезаписывая все с сервера на локальный. Недостатком этого является то, что для завершения работы над большим складом может потребоваться ДОЛГОЕ время.

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

p4 diff -sd //Depot/path/… | p4 -x – sync -f 

-sd вариант: Показать только имена закрытых файлов, которые отсутствуют на клиентском рабочем месте, но присутствует в депо.

Доступно больше вариантов (sa/se/etc.), Если -sd не то, что вам нужно. см. here.

кредитов за команду отправлено this блог.

-1

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

Смежные вопросы