我需要一些关于使用Perforce Streams时遇到的用例的指导。说我有以下结构:
//ProductA/Dev:
share ...
//ProductA/Main
share ...
import Component1/... //Component1/Release-1_0/...
//ProductA/Release-1_0
share ...
//Component1/Dev
share ...
//Component1/Main
share ...
//Component1/Release-1_0
share ...
ProductA_Main
从Component1_Release-1_0
导入代码。每当Component1_Release-1_0
更新时,它都会自动提供给ProductA
(但只读)。
现在。我遇到的问题是,由于ProductA_Release-1_0
继承自Main
,因此也导入Component1_Release-1_0
,因此对该组件所做的任何代码或更改都会立即影响ProductA
版本。这种副作用似乎非常危险。
有没有办法隔离代码,以便在发布流中跟踪所有代码更改(甚至是导入的代码),并且有来自其他流库的0个副作用,但是对于main和dev流,代码已导入。这样,发布将有0个副作用,而main和dev可以方便地导入在软件仓库中进行的任何更改。
我知道一个选项是在Component1
软件仓库中创建某种特定于产品的发布流,但这似乎有点像kludge,因为Component1
不需要任何引用{{1} 1}}。
答案 0 :(得分:0)
如果您只是希望能够重建以前的版本,可以使用标签将流更新回到当时的确切情况,方法是将更改列表编号(或标签)提供给{{1 }}
如果您正在寻找显式更改跟踪,则可能需要将组件分支到发布行中。这将使库的发布副本完全不受其他流中的更改的影响,除非您选择从那里分支和协调数据。如果您认为可以对库进行独立更改以修补错误,则可能需要考虑这一点。当然,perforce不会复制服务器上数据库中的文件,只是在元数据中指向它们,并且因为您已经将它们导入到流中,所以您已经在构建机器上放置了这些文件的副本,所以除了在元数据方面,不应该有任何“浪费”。
最后,这看起来像是一个政策问题。可以通过同步回到先前版本来完成重建,但是如果要将库修复浮动到主代码行中,请保持原样;如果你想锁定库并明确地进行更改,我只需将库分支到。
整合到您的发布分支
在回答评论中的问题时,如果您选择直接集成到发布分支,则需要从流规范中删除p4 sync
行,并将其替换为import
然后将代码仅放在发布分支中的行。然后,您可以使用标准isolate
命令(或 p4v )从p4 integrate
到//Component1/Release-1_0/...
进行整合。
确定单独的组件流
最后一个想法是,您可以在//ProductA/Main/Component1/...
行创建另一个流,作为发布的占位符。