取消搁置在 Perforce/P4 中独占检出的文件

Sha*_*ayn 5 perforce locking unshelve shelving

这里肯定是菜鸟 - 我的书架上有一个文件,我想将其取消搁置以运行一些东西,但是该文件是在另一台计算机上专门签出的。理想情况下,我想要做的是在本地取消搁置文件,执行一些操作,然后丢弃本地更改。

我考虑过使用p4 printandp4 copy但它们似乎没有按要求工作 - 例如复制似乎在仓库路径之间复制文件。

如何取消搁置并忽略锁定?或者,如何从架子上下载文件并在本地覆盖它?

Sam*_*ord 4

两种选择:

  1. 用于p4 print FILE@=SHELF获取文件的内容。这对于一个文件来说非常简单,但对于多个文件来说会很烦人。

  2. 创建一个新的分支/流并将其取消搁置;独占锁不是跨分支的全局锁,因此您可以在自己的分支中做任何您想做的事情。

对于流选项 2 如下所示:

p4 switch -c my-new-stream
p4 unshelve -S my-new-stream -s SHELF
Run Code Online (Sandbox Code Playgroud)

使用手动分支规范,它看起来更像(假设您的客户端映射了所有内容,如果没有,则需要将新分支添加到客户端映射的额外步骤):

p4 branch my-new-branch
(fill in a view mapping the current branch to your new branch)
p4 copy -b my-new-branch
p4 submit
p4 unshelve -b my-new-branch -s SHELF
Run Code Online (Sandbox Code Playgroud)

  • 想回来添加一个使用“p4 print”的重要细节:如果您需要将文件写入某处,请使用“-o <输出文件>”标志,以便按原样输出文件。在脚本中复制/粘贴或捕获命令窗口输出将给出 ASCII 输出,并将破坏非 ASCII 数据的编码(例如,二进制零将变为 ASCII 20)。 (2认同)