Version control 2个标签之间perforce分支的所有更改注释?(包括合并)

Version control 2个标签之间perforce分支的所有更改注释?(包括合并),version-control,merge,perforce,Version Control,Merge,Perforce,我们的Performce admin限制了“最大行”扫描,因此我的第一个运行以下内容的想法将不起作用: 所有更改,包括在特定标签时间1集成到分支中 所有更改,包括在特定的早期标记时间2集成到分支中 将时间1减去时间2的更改,以获得带有注释的新更改 有没有其他方法可以在不进行如此大规模的查询的情况下获得相同的结果(当perforce包含7年的历史并且-i触发了历史曙光的扫描时) 根据Gregs的评论,添加了以下评论: 基本上,重点是查看在2个标签(或者更常见的是,一些旧标签和现在的标签)之间的特定

我们的Performce admin限制了“最大行”扫描,因此我的第一个运行以下内容的想法将不起作用:

  • 所有更改,包括在特定标签时间1集成到分支中
  • 所有更改,包括在特定的早期标记时间2集成到分支中
  • 将时间1减去时间2的更改,以获得带有注释的新更改
  • 有没有其他方法可以在不进行如此大规模的查询的情况下获得相同的结果(当perforce包含7年的历史并且-i触发了历史曙光的扫描时)

    根据Gregs的评论,添加了以下评论:

    基本上,重点是查看在2个标签(或者更常见的是,一些旧标签和现在的标签)之间的特定发布分支中修复了哪些bug。 我希望简化(加速)我们目前拥有的过于复杂的脚本,它查看进入发布分支的更改,它遵循进入它们至少2个分支的文件,以便打印出原始更改的所有更改集注释(临时合并注释倾向于只说merge123等,而不是实际更改注释的描述,因此我们也需要沿着树向上走到原始注释),脚本最终输出如下内容(我们将质量中心ID放入更改集注释中):

  • qualityCenterId123-修复了一些错误
  • 在gui qcId124中-修复了一些其他问题
  • bug qcId125-修复了其他一些bug
  • 合并123
  • 根据评论更新:


    Toby方法的问题是,对代码分支的大多数更改都是通过集成进行的,-我会包括这些更改,但正如所述,这会将查询分解到一定程度,因为Performce server上的负载,我们的管理员不允许它运行。因此,这就是为什么我正在寻找一种替代方法来获得相同的结果。

    不会“难道不是一个普通的标签差异做你想做的吗?”

    • 从P4V,工具->差异。选择两个标签
    • 在P4Win中,右键单击标签,选择2个标签中的差异文件
    • 从命令行,p4 diff2//codeline/..@label1//codeline/..@label2
    还是我错过了你想要的

    Ville就上述问题发表评论后的进一步建议 如果您只关注每个变更列表的信息,而不是每个文件,请从命令行尝试“p4交换”。这将为您提供一个分支中未发生的更改的摘要,并且您可以提供一个修订范围,将其限制为所需的标签

    有关详细信息,请从命令行执行“p4帮助交换”


    遗憾的是,在P4V或P4Win中,interchanges命令尚未公开。

    您的标签是否不仅仅是创建时的最新变更列表?例如,您是否确实需要在客户端工作区中记录特定文件?如果不需要,您可以非常轻松地比较与标签最接近的两个变更列表

    假设与第一个标签日期最近的更改为23000,与第二个标签日期最近的更改为25000

    p4更改//depot/PATHTOMYCODE/..@23000、@25000


    将为您提供对这两个变更列表之间的代码路径的所有更改。

    如果您的标签是简单的变更列表,托比·艾伦的答案是最好的方法

    如果标签更复杂,那么我认为您需要查看每个标签中的所有文件及其版本的差异,找到版本更改的变更列表

    您可以通过以下方式获取文件和版本列表:

    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命令,然后找出差异。在本例中,
    文件A.cpp
    更改了两次,
    文件C.cpp
    更改了3次。
    文件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
    
    然后,您需要删除早期版本的所有副本和历史记录


    正如我所说,只有在标签凌乱的情况下,你才需要这个。如果有任何方法可以让你的标签代表变更列表,你应该使用托比·艾伦的答案。

    我看不到一个简单的答案,但我还有一些建议,也许可以帮助你指出正确的方向

  • 说服您的管理员提高maxscan行数限制。如果他担心这会导致整个用户群出现问题,只需让他将您添加到新的用户组(例如“脚本”),并仅为该组设置限制。这样做的效果是,只有该组的成员才能使用上限,然后您可以协商合适的时间来运行脚本。您甚至可以在一夜之间完成
  • 查看并查看脚本提示是否有帮助-例如,可能对数据进行更严格的查看将限制查询,使其不超过maxscanrows限制
  • 您的SQL如何?您可以使用该工具构造有效的查询
  • 试着在Perforce邮件列表上提问。这是一个非常活跃的列表,有很多非常有经验的人非常有帮助。请参阅注册页面。他们很有可能会建议一些好的方法
  • 对于LYU现有的标签来说可能太迟了,但是考虑使用作业系统来跟踪工作。PrimCE有内置的查询工具来跟踪哪些工作已经将它分成不同的分支。然而,它确实需要对你的团队进行工作实践的改变。
    很抱歉,我无法提供更具体的答案。

    我需要每个更改的注释,使用diff 2 labels方法不会打印每个更改的注释。我已编辑我的答案,为您提供另一种可能性