如何有效地使用任务流?

时间:2015-09-21 14:33:24

标签: perforce perforce-stream

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

我是新的Perforce 2014用户。我创建了一个流库,并将遗留应用程序(大约10,000个cpp文件)放在开发分支中。初始导入相对较快,上传所有内容大约需要1小时。

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

令我惊讶的是,创建新任务需要很长时间(约1小时),因为它会为每个文件单独分支。我希望这个过程几乎可以立即来自其他SCM工具。 (git,svn,...)

现在我的问题是:

  • 这是预期的行为吗?
  • 或者,有没有办法更快地创建一个Task,只分支我打算修改的文件?

2 个答案:

答案 0 :(得分:2)

创建一个10k文件的新任务流应该是一个非常快速的操作(大约一两秒?),因为没有实际的文件内容被传输,假设您从一个同步的工作区开始。如果您要为新流创建全新的工作区,那么创建新工作区的一部分将是同步文件;我希望只要提交完成即可,因为它传输的数据量相同。

确保在创建新流时,您未创建新工作区。在视觉客户端中,可以选择创建工作区&#34 ;;确保取消选中该框,否则它将创建一个新的工作区,然后同步它,这是一个小时的部分。

从命令行开始,从@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"和"客户"命令实际上并不对任何文件进行操作,因此无论如何它们都会非常快。 "填充"将分支所有10k文件,但它在后端执行而不实际移动任何内容,因此它也非常快(如果你达到数百万或数十亿,它可能需要相当长的时间取决于在服务器硬件上,但10k是什么都没有)。 "同步"如果你已经同步到了流/父,那将非常快,因为所有文件都已存在;再一次,它只是在服务器端移动指针而不是传输文件内容。

答案 1 :(得分:0)

我找到了一种解决方法,可以加快速度,实际上更接近我打算做的事情:

默认情况下,使用以下"流视图"

创建任务流
share ...

我已将其替换为

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

所以我跳过大部分文件的分支,它运行正常。