(我是新的perforce用户,但过去曾使用过很多其他源代码控制系统.)
我们使用更改列表来检入每个错误修复; 更改列表注释包含错误ID,因此很容易跟踪错误修复何时被检入分支.
但是,我找不到一种简单的方法来查找已合并的特定错误修复的所有分支,或查找已合并到给定分支的所有错误修复.
据我所知perforce不跟踪所有分支,变更列表已合并到其中.据我了解,当在perforce中完成合并时,历史记录不会复制到目标分支中,因此在更改列表的注释中目标中的唯一历史记录是合并完成的.
我错过了什么?
Com*_*ger 15
Perforce跟踪已集成文件修订的位置,但不会自动使用您的错误跟踪元数据传播签入注释.
给定特定分支上的变更列表,您可以通过要求Perforce集成变更列表来判断Perforce是否认为变更列表已经集成.(我在更传统的源代码控制意义上使用"分支",意思是源代码树的特定分支,而不是特定的Perforce意义,意味着这两个源代码树之间的集成路径.)让我们说你一直在工作,//source/project/trunk/...你有一个更改列表@ 1234,你想检查它是否已经集成到你的发布分支//source/project/rel/....创建一个映射//source/project/rel/...和执行的客户端:
$ p4 integrate -n //source/project/trunk/...@1234,1234 //source/project/rel/...
Run Code Online (Sandbox Code Playgroud)
如果Perforce告诉您"已经集成了所有修订版本.",则会集成changelist @ 1234,并且应该在发布分支上提供该错误修复.如果Perforce列出已更改的文件,则表示尚未集成这些文件.(也可以将变更列表中的某些文件集成而不是其他文件,这可能会产生一些有趣的问题.)
这不是特别好 - 你需要检查你关心的每个分支上的每个错误修复,尽管它确实适用于自动化.
您可以使用"不支持的"Perforce命令interchanges快速了解哪些更改列表未从一个分支集成到另一个分支.(用Perforce的说法,"不支持"意味着"在下一版本中可能不会起作用,但我们认为它可能有用,所以我们无论如何都会发布它.")看看哪些更改列表没有从我们的版本中集成示例trunk用于释放分支,执行:
$ 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'
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我没有列出更改列表@ 1234,因为它已经集成到发布分支中.我经历过的一个问题interchanges是它会在未经整合的更改之后列出每个较新的版本,即使新的版本本身已经集成,所以如果您正在挑选版本分支的修订版,您可能会再次列出更改列表.我用interchanges第一遍来粗略地了解我需要整合什么,然后看看是否integrate更好地了解了什么是真正缺失的.
(Perforce还支持类似的"作业"概念,让人们可以将特定修复程序附加到特定的更改列表,但我的组织不使用它们,因此我不知道它们的工作情况或它们是否在集成时自动传播.)
| 归档时间: |
|
| 查看次数: |
3083 次 |
| 最近记录: |