8

我希望UserA能够在 Perforce 中创建一个更改列表,然后将其搁置。然后,我希望UserB能够取消搁置该更改列表并提交它。

这听起来很简单,但是 Perforce unshelfing 似乎并没有像我期望的那样工作。当 UserB 运行“p4 unshelve -s 1234”时,它会从更改 1234 中取消所有已更改的文件,但不会带来更改的元数据(描述、作业修复)!这意味着 UserB 可以将搁置的 CL复制到全新的 CL 中并提交(通过手动重新创建描述和修复),但这会使旧的搁置 CL 闲置。

这里合乎逻辑的事情是让UserB

  1. 取消搁置 CL
  2. 查看搁置的 CL 的元数据
  3. 将该元数据复制到的CL中
  4. 提交新的 CL
  5. 删除旧搁置的 CL
这就是Perforce 文档甚至推荐的内容。有一个小问题:不允许 UserB 删除另一个用户搁置的 CL!只有 UserA 和 p4 管理员可以删除他搁置的 CL。我不明白为什么文档会掩盖这一点。

以前有人遇到过这个问题吗?你是怎么解决的?

编辑:我应该澄清我的问题非常笼统。我正在开发一个工具,其中UserA是开发人员,而UserB是构建系统本身。开发人员会搁置一个 CL,然后让构建系统取消搁置并通过一系列构建和测试对其进行验证(如果它通过所有这些测试,则自动提交 CL)。如果构建系统提交它们似乎注定要失败,希望每个开发人员记得删除他们搁置的 CL!

4

2 回答 2

2

让构建系统发回成功或失败通知并让开发人员自己提交变更列表怎么样?

如果需要解析任何文件,尝试自动提交更改列表可能会变得很棘手。您可能能够自动化其中的一些,但如果有任何冲突则不能。

于 2012-03-19T14:20:17.577 回答
1

You might find this feature, introduced in Perforce 2013.1, to be useful:

    #539809 (Bug #53058) **
        Shelved changes containing files that do not require resolve
        may be submitted directly without unshelving first via
        'p4 submit -e <shelvedChange#>'. See 'p4 help submit' for
        details and restrictions.
于 2013-08-14T16:51:33.613 回答