Синхронизируйте ТОЛЬКО различия в хранилище, но получая ошибку - необходимо обратиться к клиенту

Я хочу иметь возможность синхронизировать ТОЛЬКО различия в хранилище с моей рабочей областью. Я не хочу повторно синхронизировать все исходные файлы, которые уже совпадают.

В настоящее время я вижу разницу с этой командой:

p4 diff -sd //depot/source/...

Но при попытке использовать эту команду для синхронизации различий депо с моей локальной рабочей областью:

p4 diff -sd //depot/source/... | p4 -x - sync -f | p4 //depot/source/...

Я получаю это сообщение в терминале:

"- необходимо обратиться к клиенту"

Примечание. Перед выполнением всех вышеперечисленных команд я установил свой клиент, используя

p4 set P4CLIENT=MYWORKSPACE

person Community    schedule 03.12.2019    source источник


Ответы (1)


Чтобы синхронизировать только те файлы, которые были обновлены на сервере с момента последней синхронизации, выполните следующие действия:

p4 sync

По умолчанию команда p4 sync синхронизирует только измененные файлы; вам не нужно выполнять какие-либо специальные вращения, чтобы это произошло.

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

p4 reconcile

откроет файлы, которые вы изменили, что позволит вам выбрать между revertвнесением изменений или submitвнесением их.

p4 clean

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

person Samwise    schedule 03.12.2019
comment
Итак, если я сделаю это p4 clean -d //depot/source/... он не должен ничего удалять в хранилище? Я не хочу ничего удалять в депо. Заранее спасибо. - person ; 03.12.2019
comment
Нет, p4 clean повлияет только на вашу рабочую область. Он будет безвозвратно удалять изменения в вашей рабочей области, которые еще не были отправлены в хранилище. - person Samwise; 03.12.2019
comment
Только что попробовал. Теперь я выполняю очистку p4, чтобы захватить отсутствующие файлы, и следую за ней с помощью snyc p4, который захватывает все последние отправленные изменения в хранилище. Идеальное решение моей проблемы. Большое спасибо за Вашу помощь. - person ; 03.12.2019
comment
Если вы можете избежать ручного удаления файлов рабочей области (используйте p4 sync FILE#none вместо rm FILE), вам не понадобится шаг p4 clean. Когда вы удаляете файлы, выполняя p4 sync для версии #none, последующая p4 sync для версии #head просто автоматически извлечет файлы, которых вам не хватает. - person Samwise; 04.12.2019
comment
Я предлагаю вам определить файл .p4ignore в вашем каталоге $HOME и установить для него переменную P4IGNORE. Вы можете перечислить файлы, которые вы не хотите удалять с помощью «p4 clean». Например, мой файл ~/.p4ignore содержит .p4config и несколько других точечных файлов в корневом каталоге моего клиента. - person Dom; 30.06.2020