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

时间:2014-07-23 08:06:42

标签: perforce

在使用perforce一段时间之后,我留下了许多仍未打开的更改列表。 要清理我想要摆脱它们的一部分。 所以这就是使这个变得复杂的原因:

  • 对于更改的子集,客户端的主机已更改。
  • 某些更改包含搁置文件。
  • 可能会删除或移动更改列表中的文件。

如果上述一个或多个要点适用于更改列表,p4v(可视客户端)将不允许您删除更改列表。

那么删除这些更改列表的有效方法是什么?

2 个答案:

答案 0 :(得分:5)

首先,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.

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

答案 1 :(得分:1)

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

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修复)。

请注意,该脚本取决于存储库中的another file