PlasticSCM CLI如何仅列出仓库中的所有文件夹(排除文件)
可行原生方案(服务端过滤,性能最优)
Plastic SCM 原生支持通过 cm find 命令在服务端直接筛选目录,无需拉取全量文件列表,也不需要自己实现递归逻辑,命令格式如下:
cm find "item where type = 'dir' and tree = 'br:branch@repo@server:port'" --format={path}
方案说明
- 过滤逻辑完全在服务端执行,仅返回匹配的文件夹路径,不会拉取任何文件相关数据,完全满足大仓库的性能要求
- 不需要额外的客户端过滤,也不需要自己实现递归遍历逻辑,单条命令即可得到所有层级的文件夹路径
替代方案(单层递归遍历,次选)
如果有特殊场景必须使用 cm ls 实现,可以按如下逻辑实现,比全量递归拉取后过滤效率高:
- 每次调用不带
-R参数的cm ls命令,使用--format={type}|{path}格式输出,区分文件和目录 - 遍历返回结果,仅对类型为
dir的路径递归执行上述cm ls操作 - 收集所有返回的目录路径即可
内容的提问来源于stack exchange,提问作者grae22
相关产品推荐
相关产品推荐

