Version control 如何使用Perforce Shelving让一个人创建更改,另一个人提交更改?
我希望UserA能够在Perforce中创建变更列表,然后将其搁置。然后我希望UserB能够取消搁置该变更列表并提交它 这听起来很简单,但performe unshelving似乎并不像我预期的那样工作。当UserB运行'p4 unshelve-s 1234'时,它将从change 1234中取消搁置所有已更改的文件,但它不会将更改的元数据(描述、作业修复)带到其中!这意味着UserB可以将一个搁置的CL复制到一个全新的CL中并提交它(通过手动重新创建描述和修复),但这会使旧的搁置的CL悬而未决 这里的逻辑是UserB取消搁置CLVersion control 如何使用Perforce Shelving让一个人创建更改,另一个人提交更改?,version-control,perforce,shelve,shelving,unshelve,Version Control,Perforce,Shelve,Shelving,Unshelve,我希望UserA能够在Perforce中创建变更列表,然后将其搁置。然后我希望UserB能够取消搁置该变更列表并提交它 这听起来很简单,但performe unshelving似乎并不像我预期的那样工作。当UserB运行'p4 unshelve-s 1234'时,它将从change 1234中取消搁置所有已更改的文件,但它不会将更改的元数据(描述、作业修复)带到其中!这意味着UserB可以将一个搁置的CL复制到一个全新的CL中并提交它(通过手动重新创建描述和修复),但这会使旧的搁置的CL悬而未决
编辑:我应该澄清一下,我的问题非常笼统。我正在开发一个工具,UserA是开发人员,UserB是构建系统本身。开发人员将搁置CL,然后让构建系统取消搁置,并通过一系列构建和测试对其进行验证(如果CL通过了所有这些测试,则自动提交CL)。如果构建系统提交了搁置的CLs,希望每个开发人员都记得删除它们,这似乎注定要失败 让构建系统发回成功或失败的通知,让开发人员自己提交变更列表怎么样
如果需要解析任何文件,尝试自动提交变更列表可能会变得棘手。您可能能够自动化其中的一些功能,但如果存在任何冲突,则无法实现自动化。您可能会发现在Performce 2013.1中引入的此功能非常有用:
#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.
#539809(Bug#53058)**
包含不需要解析的文件的搁置更改
可直接提交,无需先通过取消搁置
“p4提交-e”。有关详细信息,请参阅“p4帮助提交”
细节和限制。
我认为关键在于UserA必须在搁置后还原搁置的文件,然后将变更列表的所有者和客户机字段分别设置为UserB和UserB的客户机名称。(或者构建系统可以这样做,假设它有足够的特权。)是的,更改变更列表的所有者是关键。一旦UserB拥有变更列表,他们可以在不再需要时删除它。这将是一个很好的小助手脚本的候选者,它可以作为一个自定义命令放在P4V中,甚至可以放在代理中。你认为这最好是一个p4触发器,或者p4v中的一个脚本,或者甚至是一个完整的自定义包装器吗?也许你可以让UserB成为管理员用户。我认为它可以删除任何用户的搁置文件。这就是我们现在所做的。我们正在探索确保所有签入在签入之前都经过认证的选项。