Perforce:需要一些关于Perforce Streams的介绍 [英] Perforce:Need some introduction on Perforce streams
问题描述
我是第一次使用强制流。我在网上浏览了一些文档,并不清楚Perforce Streams的主要用途是什么。 有人能帮我简单介绍一下Perforce Streams吗?主要目的是什么?什么时候有用?
推荐答案
如果您已经熟悉Perforce中的分支,您就知道分支可以是由两种类型的视图管理的任意文件集合:
- 一个或多个客户端视图,用于定义为同步分支而需要映射到工作区的文件集
- 一个或多个分支视图,用于定义如何合并此分支与其他分支之间的更改。(即使您没有定义永久分支规范,如果您运行
p4 integrate src... dst...
,这也是一个临时分支视图。)
//depot/main/...
是您的主线,//depot/rel1/...
是您的rel1
发布分支,然后像这样定义视图:
Branch: rel1
View:
//depot/main/... //depot/rel1/...
Client: main-ws
View:
//depot/main/... //main-ws/...
Client: rel1-ws
View:
//depot/rel1/... //rel1-ws/...
如果您想要有一个工作区并在两个分支之间切换,您可以执行如下操作:
p4 client -t rel1-ws
p4 sync
(do work in rel1)
p4 submit
p4 client -t main-ws
p4 sync
p4 integ -r -b rel1
这当然是一个非常简单的示例--如果您决定要从分支取消映射某些文件,则必须在两个客户端规范以及可能的分支视图中进行更改,如果您创建更多分支,即更多客户端规范和更多分支规范,等等。
对于STREAMS,相同的简单双分支设置由两个STREAMS表示:
Stream: //depot/main
Parent: none
Type: mainline
Paths:
share ...
Stream: //depot/rel1
Parent: //depot/main
Type: release
Paths:
share ...
要在两个流中执行工作,您需要执行以下操作:
p4 switch rel1
(do work in rel1)
p4 submit
p4 switch main
p4 merge --from rel1
管理分支和客户端视图的所有任务都是自动处理的--switch
命令会生成适合命名流的客户端视图并对其进行同步(它还会搁置正在进行的工作,或者可以选择将其重新定位到新的流,类似于git checkout
命令),而merge
命令会生成在当前流和命名源流之间映射的分支视图。
还会处理更复杂的视图;例如,如果要忽略与这些流之一相关联的所有工作区中的所有.o
文件,只需将以下内容添加到//depot/main
流:
Ignored:
.o
这将由所有子流自动继承,并反映在所有自动生成的客户端视图和分支视图中(这就像将-//depot/branch/....o //client/...
行同时添加到所有客户端视图中)。
使用流定义可以做的事情还有很多,但希望这能给您一个大概的概念--重点是将人们所做的所有工作都用来管理与代码行相关联的视图,并将其集中/自动化以便于使用,并提供像p4 switch
和p4 merge --from
这样的良好语法。
这篇关于Perforce:需要一些关于Perforce Streams的介绍的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!