Подтвердить что ты не робот

Perforce не синхронизирует файлы правильно

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Вам нужно использовать опцию "Получить Revison..." и включить параметр "Force Operation".

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

Ответ 4

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

Ответ 5

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

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

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

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

Существует больше опций (sa/se/etc.), если -sd не то, что вам нужно. см. здесь.

кредиты для команды идут в этот блог.

Ответ 6

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