我们的perforce管理员限制了“max-row”扫描,这样我第一次运行以下内容的想法就不起作用了:
是否有另一种方法可以在没有如此大规模查询的情况下获得相同的结果(当perforce包含7年的历史记录时,-i触发扫描回到历史的曙光)
根据Gregs的评论添加了这条评论:
基本上,重点是看看在2个标签之间的特定版本分支中修复了哪些错误(或者更常见的是,某些旧标签和今天)。 我希望简化(加速)我们目前拥有的太复杂的脚本,它查看进入发布分支的更改,它跟随进入它们的文件至少有2个分支,以便从原始更改打印出所有变更集注释(临时合并评论往往只是说merge123之类的东西,而不是实际变更评论的描述,所以我们需要将树向上走到原始评论),脚本最终输出如下所示(我们把质量中心ID进入变更集评论):
根据评论更新:
Toby方法的问题在于,代码分支的大部分更改都是通过集成实现的,-i会包含这些更改,但正如所声明的那样,将查询分解到这样的程度,即由于perforce服务器上的负载,我们的管理员赢了“让它运行。所以这就是为什么我正在寻找另一种方法来获得相同的结果。
答案 0 :(得分:1)
您的标签在创建时不仅仅是最新的更改列表吗?例如,您真的需要在客户端工作区中记录特定文件吗?如果没有,您可以非常轻松地比较最接近标签的两个更改清单。
假设对您的第一个标签日期的最接近的更改是23000,而您的关闭更改为您的第二个标签日期是25000然后
p4更改// depot / PATHTOMYCODE /...@ 23000,@ 25000
将为您提供这两个更改列表之间代码路径的所有更改。
答案 1 :(得分:1)
我看不出一个简单的答案,但确实有一些建议可能有助于指出正确的方向。
抱歉,我无法提供更具体的答案。
答案 2 :(得分:0)
普通的Label-diff不会做你想要的吗?
或者我完全错过了你的目标?
如果您只是在每个更改列表的信息之后,而不是每个文件,那么从命令行尝试“p4交换”。这将为您提供一个分支中的更改在另一个分支中未发生的摘要,并且您可以提供修订范围以将其限制为您需要的标签。
有关详细信息,请从命令行执行“p4 help interchanges”。
不幸的是,交换命令尚未在P4V或P4Win中公开。
答案 3 :(得分:0)
如果您的标签是简单的变更列表,Toby Allen的答案是最好的方法。
如果标签更复杂,那么我认为您需要查看每个标签中的所有文件以及它们的版本不同的位置,找到版本更改的更改列表。
您可以使用以下命令获取文件和版本列表:
p4 fstat -Of //...@MyLabel
编辑:
考虑两个复杂的标签:
VERSION_A:
//depot/file_A.cpp#4
//depot/file_B.cpp#7
//depot/file_C.cpp#1
VERSION_B:
//depot/file_A.cpp#6
//depot/file_B.cpp#5
//depot/file_C.cpp#4
在此示例中,标签不描述特定的更改列表,每个文件的头部更改可能不同。
如果您可以使用这样的标签,那么您可以在每个标签上运行p4 fstat命令,然后找出差异。在此示例中,file_A.cpp
已更改两次,file_C.cpp
已更改3次。 file_B.cpp
在第二个标签中较旧,因此可以忽略它。
现在您需要查看涉及这些版本的更改:
file_A.cpp#5
file_A.cpp#6
file_C.cpp#2
file_C.cpp#3
file_C.cpp#4
可以使用p4 filelog检索这些更改,因此您希望运行以下内容:
p4 filelog file_A.cpp#6
p4 filelog file_C.cpp#4
然后您需要删除任何重复项和早期版本的任何历史记录。
就像我说的,如果你有麻烦的标签,你只需要这个。如果有任何方法可以让你的标签代表变更清单,你应该使用Toby Allen的答案。