在 Perforce 中,如何获得作为标签一部分的最高变更列表编号?

In Perforce, how to get the highest changlist number that is the part of a label?

所以,我来到 this answer Perforce 的网站,它似乎建议 p4 更改 -m1 @label1 作为要使用的命令。不幸的是,我 运行 进入 Request too large (over 100000) 一些标签的问题,这让我非常疯狂,因为我在命令 运行 时包含了 -m1 选项。有没有办法避免此错误,或者是否有替代命令来获得相同的结果。提前感谢您的回答。

听起来您正在达到 'MaxScanRows' 极限。

这应该是由管理员设置的。

有关它的更多信息在这里: http://answers.perforce.com/articles/KB/2529

希望这对您有所帮助, 珍.

由于标签可以包含任意一组修订,因此服务器在所有修订中找到最高变更列表的唯一方法是扫描每个修订以找到与每个修订相关联的变更列表,return它找到的最高的,所以它是 O(n),其中 n 是标签大小。如果您达到 100k 的 MaxScanRows 限制,我会假设这些是包含超过 100k 文件的标签?您可以通过带有 -Zdbstat 标志的 运行 查看任何给定命令扫描了多少记录,如下所示:

p4 -Zdbstat changes -m1 @label

正如 P4Jen 所说,增加 MaxScanRows 是一种解决方案,但它不会使命令扫描更少的行或消耗更少的时间。作为一个更全面的解决方案,我建议尽可能远离手动填充的标签,并转向定义为简单更改列表别名的标签:

Label: label
Revision: @CHANGE
View:

请注意,要获得 "alias" 标签的全部性能优势(即标签被视为与更改完全相同),必须将 Revision 字段设置为更改列表,并且 View 字段必须为空(如果视图字段不为空,您会得到一个 "automatic" 标签,它有自己的性能特点)。

使用别名标签,只需将标签视为 O(1) 操作即可获得等效的更改列表。 :)