2

我正在一个项目中工作。我们同时使用 clearcase 和 perforce。

由于我们正在处理不同的构建,在 clearcase 中,我们为每个版本创建一个标签。假设发布“X”,我们创建一个透明案例“Label X”。标签 X 拥有与版本“X”相关的所有最新文件。当我们完成另一个版本时说“Y”,我们创建另一个标签说“标签 Y”。标签“Y”再次包含发布“Y”的所有文件。但是在任何时候我们都可以回到“Label X”。这意味着所有文件都将恢复到“Label X”。

我们可以在 perforce 中做同样的事情吗?我们可以在 perforce 中创建一个标签,以便在任何时间点,我们都可以转到该标签,该标签将提供该标签时间线中的文件。

4

3 回答 3

3

Perforce 还提供了一个有趣的指南“迁移规划指南:IBM Rational ClearCase to Perforce ”,并提到这p4 label不是唯一的选择:

标签策略

ClearCase 和 Perforce 都提供标签,用于标识构成基线的文件版本。对于许多 ClearCase 用户来说,标签是强制性的。应用标签非常耗时,通常占与创建稳定构建相关的 30% 或更多时间。

在 Perforce 中,标签只是复制基线的一种方式。变更列表以比标签更少的构建过程负担、更快、更容易引用的方式实现了相同的目标

每个 Perforce 签入都会生成一个唯一的更改列表编号,该编号反映了存储库在某个时间点的状态。任何更改列表都可以用来描述存储库中每个文件的状态,即使它只影响存储库的一小部分。

这是一种过于简单化的做法,因为典型的配置规范有几行或更多行。
Perforce 中的分支表示为目录,这使得将分支和变更列表编号组合起来表示基线变得很容易。
或者,标签可以引用仅限于服务器中已识别范围的更改列表编号,其中范围通常是特定分支。

于 2013-12-13T07:50:15.173 回答
2

是的,您可以在 perforce 中创建标签。

用于p4 label创建标签规范,然后用于用p4 tag标签标记文件。

您可以在用户指南中了解有关标签的更多信息。

于 2013-12-13T06:29:41.713 回答
1

假设您有以下设置:

//depot/source/sourcefile.cpp
//depot/build/product.exe

早上 8 点,您签入 sourcefile.cpp(现在是修订版 2,在更改列表 100 中)。构建机器开始构建,早上 9 点,构建机器检查 product.exe,修订列表 104 中的修订版 2。酷。遗憾的是,您可能没有注意到,但在 8 点 15 分,有人在更改列表 103 中签入了 sourcefile.cpp 的修订版 3。

你有什么选择?如果只记录源 (100) 和产品 (104) 的更改列表,则可以将整个项目同步到源,然后进一步同步更改列表 104 的内容。这个过程有点手动 - 你必须记录两个数字并进行两步操作。

您可以制作标签,但遗憾的是,标签不允许多次修订,因此您实际上并不可行。

最后,在您签入修订版 104 后的某个时间点,您可以创建一个分支。这基本上是您感兴趣的修订的元数据副本,以便您将来可以一键同步。您可以锁定分支以防止更改。

p4 integ //depot/source/...@102 //depot/milestone1/source/...
p4 integ //depot/build/...@104 //depot/milestone1/build/...

令人讨厌的细节 - 您可以在 perforce 中配置文件以保存有限数量的修订 - 例如,您可能只需要 product.exe 的最后 16 个修订。(将文件类型更改为 +S16)。如果您(或其他人这样做),您的前两个过程最终将失败,因为修订已因修订过多而被删除。如果您使用分支,您的 product.exe 不会过期。

于 2013-12-17T06:51:17.997 回答