在提交期间保留Perforce信息

时间:2014-01-15 07:35:24

标签: version-control perforce perforce-integrate

我正在编写一个包装脚本,我将进行大规模集成以更改分支结构。现在我们有这样的结构:

//depot/product/component-1/...
//depot/product/component-2/...
...
//depot/product/component-n/...

我们正在转向

//depot/product/release/component-1/...
//depot/product/release/component-2/...
...
//depot/product/release/component-n/...

我编写了一个用于进行大规模集成的包装脚本,其中每个分支移动都作为单个更改列表的一部分被捕获。如同更改列表101将具有组件-1的集成,更改列表102将具有组件-2等等。最后,它将提交所有更改。这是为了缩小组件级别的提交。

我担心如果两者之间发生了不好的事情并且我的脚本无法提交,或者由于不可预见的原因,集成处于中间状态,我必须将所有内容恢复到运行此脚本之前的状态。我怎样才能做到这一点 ?是否存在一种机制,我可以在以某种方式提交到perforce本身之前保留数据,以便我可以回归它?

当我说数据时,我指的是

的输出
p4 files //depot/product/component-n/...@LabelTobeUsedForInteg 

我的约束是这个脚本将由多个人执行他们自己的集合执行,这就是为什么我不能在本地将信息转储到文本文件中。我需要一个解决方案,人们只能访问perforce可以获得这些持久性信息,以防他们不得不退回并恢复提交。在DB中存储此信息也是不可能的。 :(

有没有办法实现这个目标?提前致谢。真的很感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

如果您希望所有集成都发生或没有,那么这就是原子变更列表的用途。将所有集成放在一个更改列表中,并且它们都将被提交或者都不会提交。

如果您确实想要单独执行它们,则不需要保留p4 files命令的输出。集成后标签仍将在旧版本上,因此p4 files命令仍应生成相同的输出。

如果您确实需要保留输出,则可以将其检入Perforce。制作一些像//depot/integration-records这样的区域并检查每个文件,例如//depot/integration-records/component-n.txt因为它产生了。您可以将文件添加到集成component-n的更改列表中,以便文件的存在与否表明集成是否已完成。