如何查看分支是否在Perforce中包含错误修复?

如何查看分支是否在Perforce中包含错误修复?,perforce,Perforce,(我是一名新的Performce用户,但在过去使用过许多其他源代码控制系统。) 我们使用变更列表签入每个bug修复;更改列表注释包含错误ID,因此当错误修复被签入分支时,可以很容易地进行跟踪 但是,我看不到一种简单的方法来查找给定错误修复已合并到的所有分支,或者查找已合并到给定分支的所有错误修复 据我所知,perforce并没有跟踪变更列表合并到的所有分支。据我所知,在执行合并时,历史不会复制到目标分支中,因此在更改列表的注释中,目标中唯一的历史是合并到的 我遗漏了什么?Perforce跟踪文件

(我是一名新的Performce用户,但在过去使用过许多其他源代码控制系统。)

我们使用变更列表签入每个bug修复;更改列表注释包含错误ID,因此当错误修复被签入分支时,可以很容易地进行跟踪

但是,我看不到一种简单的方法来查找给定错误修复已合并到的所有分支,或者查找已合并到给定分支的所有错误修复

据我所知,perforce并没有跟踪变更列表合并到的所有分支。据我所知,在执行合并时,历史不会复制到目标分支中,因此在更改列表的注释中,目标中唯一的历史是合并到的


我遗漏了什么?

Perforce跟踪文件的修订版本,但它不会自动传播带有bug跟踪元数据的签入注释

给定特定分支上的变更列表,您可以通过要求Performce集成变更列表来判断Performce是否认为该变更列表已集成。(我在更传统的源代码管理意义上使用“分支”,是指源代码树的特定分支,而不是在特定的性能意义上指这两个源代码树之间的集成路径。)假设您一直在
//source/project/trunk/..
中工作,并且您有一个变更列表@1234,希望检查它是否已集成到您的发布分支
//source/project/rel/..
。创建映射
//source/project/rel/…
的客户端并执行:

$ p4 integrate -n //source/project/trunk/...@1234,1234 //source/project/rel/...
如果Perforce告诉您“所有修订版都已集成”,那么changelist@1234已经集成,并且该错误修复应该在发布分支上可用。如果Perforce列出了已更改的文件,则这些文件尚未集成。(变更列表中的某些文件也可能被集成,而不是其他文件,这可能会导致一些有趣的问题。)

这并不能很好地扩展——您需要检查您关心的每个分支上的每个错误修复,尽管它确实适合自动化

您可以使用“unsupported”Perforce命令
interchanges
快速了解哪些变更列表尚未从一个分支集成到另一个分支。(用Perforce的说法,“unsupported”的意思是“在下一个版本中可能不起同样的作用,但我们认为它可能很有用,所以我们无论如何都会发布它”。)要查看哪些变更列表没有从示例主干集成到发布分支,请执行:

$ p4 interchanges //source/project/trunk/... //source/project/rel/...
Change 1236 on 2010/10/10 by user@client 'Fixed some bug you don't care about'
Change 1235 on 2010/10/09 by user@other_client 'Fixed some other random bug'
在本例中,我没有列出changelist@1234,因为它已经集成到发布分支中。我在使用
interchanges
时遇到的一个问题是,它会在未整合的更改后列出每个较新的修订,即使较新的修订本身已经集成,因此如果您正在为发布分支挑选修订,您可能会再次看到列出的修订列表。我使用
interchanges
作为第一步,大致了解需要集成的内容,然后查看
integrate
以更好地了解真正缺少的内容


(Perforce还支持类似的“作业”概念,允许将特定的修复附加到特定的变更列表,但我的组织不使用它们,因此我不知道它们工作得如何,也不知道它们是否在集成时自动传播。)

回答得很好。更多的细节可以在代码行Y中的Bug X修复了吗?第1节(第8章)。