Perforce:需要一些关于Perforce streams的介绍吗
我对perforce streams不熟悉。我浏览了一些网上文档,但不清楚perforce streams的主要用途是什么。Perforce:需要一些关于Perforce streams的介绍吗,perforce,Perforce,我对perforce streams不熟悉。我浏览了一些网上文档,但不清楚perforce streams的主要用途是什么。 有谁能帮我简单介绍一下perforce streams吗。主要目的是什么?什么时候有用 如果您给出一些上下文提示,那么回答这个问题会更容易些——您是否已经理解了分支和合并的一般概念,因为它们在其他工具中使用过,或者更好的是,您是否已经熟悉在没有流的Perforce中分支是如何工作的?如果是这样的话,我可以向您详细介绍streams相对于手动管理分支和客户端视图的好处 对于
有谁能帮我简单介绍一下perforce streams吗。主要目的是什么?什么时候有用 如果您给出一些上下文提示,那么回答这个问题会更容易些——您是否已经理解了分支和合并的一般概念,因为它们在其他工具中使用过,或者更好的是,您是否已经熟悉在没有流的Perforce中分支是如何工作的?如果是这样的话,我可以向您详细介绍streams相对于手动管理分支和客户端视图的好处 对于这个问题的答案,我假设您对分支基本上是新手,并将简单地引导您进入2006年谷歌技术讲座“变革的流程”,这是由Perforce streams的首席架构师之一Laura Wingerd给出的。这大约是在streams在Perforce(2011.1版本)中实际实施之前的5年,但是关于如何管理软件变体之间的变更流的核心思想都存在。希望通过您已经阅读的流文档的附加上下文,可以更清楚地了解为什么这在现实世界中是有用的
如果您已经熟悉Perforce中的分支,您会发现分支可以是任意文件集合,由两种类型的视图管理:
p4 integrate src…dst…
这是一个特殊的分支视图。)//depot/main/..
为主线,//depot/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开关
和p4合并--
@Sam Stafford,感谢您的回复。我了解perforce中的分支和合并概念。但我想知道更多关于溪流的信息,它的目的是什么?使用这种流有什么好处?如果你能举个例子就好了。分支和流的主要区别是什么?在perforce中,stream优于branch的优点是什么。我将把这个答案留给其他搜索这个问题的人,他们没有那个上下文。:)@山姆·斯塔福德,非常感谢:)这真的很有帮助。疑问:如果我们想处理流,父流和子流应该具有相同的文件夹结构吗?也就是说,“主”分支有A、B、C文件夹,“私有”分支是主流的子级,也应该有A、B、C作为必填项,或者我们可以根据自己的意愿在子流中拥有自己的观点?使用streams在空间消耗方面有什么优势吗?@Sam Stafford,目前我们在classic perforce,我们希望将我们的项目转移到perforce streams。在这样做之前,我们需要解决什么问题吗?通常建议您在streams中启动一个新项目,而不是尝试迁移一个现有项目——没有用户友好的迁移路径(您可以这样做,但您需要对Perforce的数据模型如何工作有真正深入的了解,或者需要有人提供帮助).Streams确实允许您筛选/重新映射父流和子流之间的关系,这可以间接节省空间。我建议您更详细地研究流功能,并考虑它们与您的项目的关系。感谢更新Sam:)如果我们将classic depot移至perforce streams,那么这些文件的历史也将进入streams?流遵循父子关系,对吗?这意味着父分支和子分支应该具有相同的层次结构(即两个分支应该具有相同的文件夹结构)?在我的要求中,我只想创建仅包含部分内容的子流。如果我这么做的话,那就是表明变化需要从主要方面进行整合。我们不能工作吗