Perforce Streams - 隔离导入的库

时间:2014-01-10 15:36:53

标签: perforce perforce-stream

我需要一些关于使用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_MainComponent1_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}}。

1 个答案:

答案 0 :(得分:0)

如果您只是希望能够重建以前的版本,可以使用标签将流更新回到当时的确切情况,方法是将更改列表编号(或标签)提供给{{1 }}

如果您正在寻找显式更改跟踪,则可能需要将组件分支到发布行中。这将使库的发布副本完全不受其他流中的更改的影响,除非您选择从那里分支和协调数据。如果您认为可以对库进行独立更改以修补错误,则可能需要考虑这一点。当然,perforce不会复制服务器上数据库中的文件,只是在元数据中指向它们,并且因为您已经将它们导入到流中,所以您已经在构建机器上放置了这些文件的副本,所以除了在元数据方面,不应该有任何“浪费”。

最后,这看起来像是一个政策问题。可以通过同步回到先前版本来完成重建,但是如果要将库修复浮动到主代码行中,请保持原样;如果你想锁定库并明确地进行更改,我只需将库分支到。

整合到您的发布分支

在回答评论中的问题时,如果您选择直接集成到发布分支,则需要从流规范中删除p4 sync行,并将其替换为import然后将代码放在发布分支中的行。然后,您可以使用标准isolate命令(或 p4v )从p4 integrate//Component1/Release-1_0/...进行整合。

确定单独的组件流

最后一个想法是,您可以在//ProductA/Main/Component1/...行创建另一个流,作为发布的占位符。