Perforce:需要一些关于Perforce Streams的介绍 [英] Perforce:Need some introduction on Perforce streams

查看:0
本文介绍了Perforce:需要一些关于Perforce Streams的介绍的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是第一次使用强制流。我在网上浏览了一些文档,并不清楚Perforce Streams的主要用途是什么。 有人能帮我简单介绍一下Perforce Streams吗?主要目的是什么?什么时候有用?

推荐答案

如果您已经熟悉Perforce中的分支,您就知道分支可以是由两种类型的视图管理的任意文件集合:

  1. 一个或多个客户端视图,用于定义为同步分支而需要映射到工作区的文件集
  2. 一个或多个分支视图,用于定义如何合并此分支与其他分支之间的更改。(即使您没有定义永久分支规范,如果您运行p4 integrate src... dst...,这也是一个临时分支视图。)
从技术角度看,STREAMS的主要目的是消除维护这些视图的工作。使用"经典的"Perforce分支,您可以声明文件路径//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 switchp4 merge --from这样的良好语法。

这篇关于Perforce:需要一些关于Perforce Streams的介绍的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆