version-control - 如何使用 Perforce Shelving 让一个人创建更改并让另一个人提交更改?

标签 version-control perforce shelve shelving unshelve

我要 用户A 能够在 Perforce 中创建一个更改列表,然后将其搁置。那么我想要 用户B 能够取消搁置该更改列表并提交它。

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

这里的逻辑是 用户B

  • 取消搁置 CL
  • 查看搁置的 CL 的元数据
  • 将该元数据复制到新的 CL
  • 提交新CL
  • 删除旧的搁置 CL
  • 这就是Perforce documentation甚至推荐。有一个小问题:不允许用户 B 删除其他用户的搁置 CL!只有 UserA 和 p4 管理员可以删除他搁置的 CL。我不明白为什么文档掩盖了这一点。

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

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

    最佳答案

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

    如果需要解决任何文件,尝试自动提交更改列表可能会变得棘手。您可能能够自动执行其中的一些操作,但如果存在任何冲突,则不能。

    关于version-control - 如何使用 Perforce Shelving 让一个人创建更改并让另一个人提交更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764979/

    相关文章:

    git - 使用 Git 将远程 'origin' 更改为 'upstream'

    强制从命令行自动解析?

    perforce - p4 积分 : File(s) not in client view

    perforce - 如何列出自特定变更列表以来的 P4 变更

    python - 临时货架?

    Git 跟踪非原始分支的上游分支

    version-control - 为什么 'hg mv' (mercurial) 默认情况下不移动文件的历史记录?

    java - 如何在 Eclipse 工作区中获取当前 Subclipse 提交作者姓名?

    python - 删除我的 Python 程序留下的搁置 .dat 文件的简单方法?

    Linux shell 中的 python 导出环境变量