Perforce:如何删除P4V拒绝删除的更改列表?

4

在使用Perforce一段时间后,我留下了许多仍然未关闭的更改列表。

为了清理,我想要摆脱其中的一个子集。

所以这就使得情况变得复杂:

  • 对于某些更改,客户端的主机已更改。
  • 某些更改包含存储的文件。
  • 来自更改列表的文件可能已被删除或移动。

当上述任一点适用于更改列表时,可视化客户端p4v将不允许您删除更改列表。

那么,有什么有效的方法可以删除这些更改列表吗?

2个回答

7

首先,Perforce会拒绝在工作区的主机不同的情况下处理任何更改列表。因此,第一步是将工作区的主机更改为当前主机。这可以使用可视化客户端p4v轻松完成。打开工作区属性,选择编辑并更改主机。

然后,您可以使用命令行来摆脱麻烦的修改列表:

# to delete a changelist
CLIENT="name_of_your_client"
CHANGE="number_of_the_changelist_to_delete"
p4 -c $CLIENT shelve -c $CHANGE -d //... # Delete all shelved files from it.
p4 -c $CLIENT revert -k -c $CHANGE //... # Revert all files from changelist (only metadata).
p4 -c $CLIENT change -d $CHANGE # Finally delete the changelist.

在执行最后一条命令之后,更改列表将永远消失。

请参阅相关问题: https://dev59.com/Umct5IYBdhLWcg3wKqa9#12301548 - Bryan Pendleton
这实际上是我的起点。当我只想删除旧客户端中的一些更改列表但保留其他更改列表时,它失败了。 - Pascal

2

可以通过命令行来修复主机名,如下所示:

client_hostname="$(p4 client -o ${CLIENT} | grep "^Host" | awk '{print $2}')"
p4 client -o ${CLIENT} | sed "/^Host:/ s=${client_hostname}=${HOSTNAME}=" | p4 client -i


我曾经遇到过相同的问题,写了一个脚本(p4-delete-changelist)来解决这些问题(还有一个是删除p4修复程序)。

请注意,该脚本依赖于仓库中的另一个文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接