Как получить размер определенного потока перед выполнением синхронизации

#perforce

Вопрос:

Я работаю над сценарием, и мне нужно запросить размер определенного потока, прежде чем выполнять синхронизацию с локальным жестким диском. Локальная несинхронизированная папка пуста. Я знаю, что есть размеры p4, и я попробовал следующую команду

 p4 -u TheUserName -p ExternalServerUrl -c MyWorkspace sizes -s //Path/To/Stream -H
 

Но, похоже, он сообщает о моем локальном хранилище (которое пусто).
Итак, результат, который я получаю, таков:

 //Path/To/Stream 0 files 0 bytes
-H 0 files 0 bytes
 

Итак, как я могу запросить размер сервера перед фактической синхронизацией?

Заранее спасибо за любые отзывы!

Ответ №1:

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

 p4 sizes -s -H //Path/To/Stream/...
 

Обратите внимание, что если значение -H идет после пути к файлу, оно обрабатывается как другой путь к файлу, поэтому в выводе указана строка -H 0 files 0 bytes .

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

 p4 sizes -s -H //MyClient/...
 

Другим решением, которое также будет работать, если локальный каталог не пуст, является использование totalFileSize поля в выводе с тегами p4 sync :

 p4 -Ztag -F "%totalFileSize% bytes (%totalFileCount% files)" sync -n -q
 

Комментарии:

1. Спасибо за помощь 🙂 Когда у меня будет достаточно очков, я займу ваш пост.