无法组织 perforce 流以容纳多个主要分支和流

Trouble organizing perforce streams to accommodate multiple main branches with streams

所以我们有一个项目,其中同时处理多个“主要”分支。所以有 1.0.0、2.0.0 和 3.0.0。进入 2.0.0 的东西不能进入 1.0.0,等等。每个分支向前合并,1.0.0 > 2.0.0 > 3.0.0.

我不认为我们可以使用正常的流,因为如果我们设置发布分支,您无法从中获取功能分支,而且这些还不是“发布”,它们仍在积极开发中.如果我们往下走,那么所有东西都必须通过一个主分支才能发布,而且没有办法隔离文件。

所以我想我的问题是,有没有正确的方法来为这样的事情设置流?

谢谢

许多关于使用主线模型的假设来自这样一个环境,在这个环境中,版本被削减的频率相对较低(每年两次),并且只针对严重的错误进行修补——因此需要从一个版本开始的更改另一个往往是例外而不是规则。在这个模型中,绝大多数合并只是来自最新版本(例如,当版本正在稳定时,这是在周期中的某个时刻,在该版本之前的版本中几乎没有 activity)或从开发分支返回到主线,然后从主线返回到开发分支(因为开发分支主要处理针对主线而非任何发布分支的新功能)。如果手动挑选更改以解决严重错误(这种情况很少见),则更改只会从主线转移到发布分支,而不会直接从开发分支转移到发布分支。从一个旧的发布分支到一堆后来的发布分支中挑选一个修复有点尴尬,但在这个模型中很少见,所以尴尬并不重要。

如果您非常积极地同时处理多个版本,则主线模型的价值较小,因为您需要:

  • 在 sibling/cousin 个分支之间合并(大部分工作正常,但如果进行了大量重构,可能会变得很尴尬)
  • 仔细挑选进出主线的更改以强制执行正确的更改流程(这有助于更清晰的合并,但需要更多的手动跟踪)

这里的正统建议可能是重新考虑您的版本 methodology/policy 不需要那么多“瀑布”,但我假设您出于商业原因要求它以这种方式工作。考虑到这种限制,我认为您可能根本不想使用不同流“类型”和“流”的概念,因为它们对内置的主线模型有假设,而您所做的根本不是主线发展模式。

要在流中实现一个非主线模型(在没有流管理指南的情况下它仍然有一些价值,因为它会帮助您管理您的客户视图等等),您可能需要使用一些组合:

  • 使初始主线之后的每个流成为 development 流(我认为这是最宽松的)
  • 在每个流中设置 mergeany 选项(允许在所有方向上合并,而不是试图强制执行主线模型概念的“稳固性”)
  • 合并时使用 -F 选项忽略流向(我认为 mergeany 如果你一直使用它就没有必要了)