如何在进行同步之前检索特定流的大小

How to retrieve the size of a specific stream before doing sync

我正在编写脚本,需要在同步到本地硬盘之前查询特定流的大小。本地未同步文件夹为空。 我知道有 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

那么如何在实际进行同步之前向服务器查询大小?

提前感谢您的任何反馈!

您需要使用通配符来引用一组多个文件(包括一个depot目录路径):

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

请注意,如果 -H 位于文件路径之后,它将被视为另一个文件路径,这就是为什么您的输出包含行 -H 0 files 0 bytes.

另一件需要注意的重要事情是,与流名称对应的仓库路径不一定与流内容相同——如果流是虚拟流,或者如果它有 import 路径,其部分或全部文件位于其他库路径下。出于您的目的,您可能想要使用客户端路径语法,它将对应于工作区中的所有内容(即工作区流映射的所有内容):

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

如果本地目录不为空,另一种解决方案也可以使用,即利用 p4 sync:

的标记输出中的 totalFileSize 字段
p4 -Ztag -F "%totalFileSize% bytes (%totalFileCount% files)" sync -n -q