我正在尝试执行 p4 同步文件夹/...
它的速度不是很快,而且只使用了 2% 的 CPU。我对它的性能不满意。
我正在尝试在 bash 中编写一个函数,给定一个参数 n,它将形成一个深度为 n 级的所有文件和文件夹的队列,并分叉 p4 sync -f $thatDirectory/... 或 p4 sync -f $thatFile 的进程。
我该如何开始呢?有没有可以做到这一点的实用程序?
提前致谢。
答案1
答案2
有时 p4d(服务器)进程已使用“-f”标志启动,该标志将把它作为单线程进程运行。
需要注意的几点
尝试使用 -p 选项进行同步 - 这意味着更少的数据库写入,这一定是一件好事!
您可以尝试“深入 n 级并从那里向下同步”类型的事情,例如:
$ p4 dirs //<path>/* | 同时读取路径;执行
p4 目录 $path/* | 同时读取子路径; 做 p4 目录 $subpath/* | 同时读取子子路径; 做 p4 <cmd> $subsubpath/... ; 完毕; p4 <cmd> $path/... # 捕获此级别的文件 完毕; p4 <cmd> //<path>/... # 捕获此(顶层)级别的文件完成 在您的情况下,您将拥有等于“sync”+任何其他参数的 <cmd>。答案3
我会避免使用每个文件同步……尤其是如果有多个用户尝试从嵌入式工具或类似工具执行此操作时。我们曾多次用此类技巧彻底搞垮我们的服务器。
然而,Perforce 确实提供了一个为您并行化同步的选项 - 并行,它确实需要一些服务器端调整,但您应该尝试一下。
您可以在 p4.exe 的多个调用中进行分片,但我会尝试使它们保持较小规模,至少不超过您可用的核心数量。