Perforce 如何有效地处理任务流?

Perforce 如何有效地处理任务流?,perforce,perforce-stream,Perforce,Perforce Stream,免责声明:我打开了这个问题,但是我的缓慢分支问题是由于服务器过载。所以这不是通常的性能行为。我现在花大约30秒来分支10K文件 我是Performce 2014的新用户。我已经创建了一个StreamDepot,并将大约10000个cpp文件放在一个开发分支中。对于初始导入来说,这相对比较快,大约需要1小时上传所有内容 现在我想创建一个“轻量级”任务流来处理一个新特性。 我使用默认菜单>新建流>类型任务。。。我在创建流时从父级选择分支文件 令我惊讶的是,创建一个新任务需要大约1个小时的时间,因为它

免责声明:我打开了这个问题,但是我的缓慢分支问题是由于服务器过载。所以这不是通常的性能行为。我现在花大约30秒来分支10K文件

我是Performce 2014的新用户。我已经创建了一个StreamDepot,并将大约10000个cpp文件放在一个开发分支中。对于初始导入来说,这相对比较快,大约需要1小时上传所有内容

现在我想创建一个“轻量级”任务流来处理一个新特性。 我使用默认菜单>新建流>类型任务。。。我在创建流时从父级选择分支文件

令我惊讶的是,创建一个新任务需要大约1个小时的时间,因为它会对每个文件进行单独的分支。我希望这个过程几乎是来自其他SCM工具的即时过程。吉特,svn

现在我的问题是:

这是预期的行为吗? 或者,是否有一种方法可以更快地创建任务,并且只对我要修改的文件进行分支?
创建一个包含10k文件的新任务流应该是一个非常快速的操作,大约需要一两秒钟?由于没有传输实际的文件内容,假设您从同步工作区开始。如果您正在为新流创建一个全新的工作区,那么创建新工作区的一部分就是同步文件;我预计这将花费与提交一样长的时间,因为传输的数据量相同

确保在创建新流时您没有创建新的工作区。在可视化客户端中,有一个创建工作区的选项;确保取消选中该复选框,否则它将创建一个新的工作区,然后进行同步,这将需要一个小时

在命令行中,从//stream/parent的工作区开始,下面是创建新任务流的步骤:

p4 stream -t task -P //stream/parent //stream/mynewtask01
p4 populate -r -S //stream/mynewtask01
p4 client -s -S //stream/mynewtask01
p4 sync

stream和client命令实际上不会对任何文件进行操作,因此无论发生什么情况,它们都会非常快。populate将对所有10k文件进行分支,但它在后端执行此操作,而不实际移动任何内容,因此,如果您进入数百万或数十亿,它也会非常快。这可能需要相当长的时间,具体取决于服务器硬件,但10k算不了什么。如果您已经同步到//stream/parent,同步会非常快,因为所有文件都已经在那里了;同样,它只是在服务器端移动指针,而不是传输文件内容。

我找到了一个解决方法,它可以加快速度,实际上更接近我的目标:

默认情况下,使用以下流视图创建任务流

share ...
我把它换成了

import ...
share /directory/I/actually/want/to/modify/...

因此,我跳过了大部分文件的分支,它工作正常。

这肯定是populate命令的问题,而不是sync命令的问题。通常同步时间为1或2分钟。目前我已经找到了一个解决方法,我将继续进一步调查。感谢您现在让我知道这不是通常的行为。我要调查的第一件事是预提交触发器,如果有的话-填充应该非常快,但它确实会触发触发器,如果您有一个作为触发器触发的代码检查器,然后,它可能会在让填充继续进行之前,将所有文件拉下来运行测试。要检查的其他内容可能是不寻常的文件类型选项,如+S强制物理复制或+k强制摘要重新计算。我现在了解到同步是在本地与边缘服务器进行的,而分支/填充是在主服务器上进行的。主服务器可能过载,这可以解释为什么分支速度慢而其他同步速度相当快。我在服务器上工作的时间长了一点,这肯定是暂时的服务器端问题。现在分支10K文件大约需要1分钟。谢谢你的帮助。@Samwise你的方法很有效,速度也很快。现在比较p4开关。建议使用什么命令?p4开关确实很慢。