0

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

//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 中也是不可能的。:(

有没有办法做到这一点?提前致谢。非常感谢您对此的帮助。

4

1 回答 1

2

如果您希望所有集成都发生或不发生,那么这就是原子更改列表的用途。将所有集成放在一个更改列表中,要么全部提交,要么都不提交。

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

如果您确实需要持久化输出,您可以将其检入 Perforce。制作一些区域,//depot/integration-records并将每个文件签入到例如//depot/integration-records/component-n.txt,因为它是生成的。您可以将文件的添加放在集成的更改列表中,component-n以便文件的存在或不存在表明集成是否已完成。

于 2014-01-15T07:47:15.913 回答