使用Perforce对多个更改列表进行差异比较

3
我有一些使用Perforce版本控制的软件。有很多次提交,因此有许多更改列表。
有一个功能是在长时间内通过许多次提交实现的,我想将其移植到其他地方。我可以手动搜索历史记录,但如果有一种简单的方法来比较基线的当前状态和所选更改列表的组合效果,那将非常好。
换句话说,将该分支中的最新最伟大之物与以下结果进行比较:更改列表A + 更改列表B + 更改列表C...
如何在Perforce中完成这个操作?

你想比较单个文件的不同版本还是多个文件的不同版本?你总是可以执行 "p4 diff ...@YYYY/MM/DD" 命令,将一个子目录在当前版本与一个早期版本进行比较。但结果当然很难读取(如果它很复杂)。 - pitseeker
如果你正在使用p4v,你是否看过“时间流逝视图”?在同一代码分支中,它可以让你随时间查看代码。它将允许你比较累积更改和当前或过去的更改清单。 - gaige
@kmort 我不知道有这样的功能。我没有从你的留言中推断出你想同时查看多个文件,尽管我可以理解那可能是你的意图。 - gaige
实际上,我真的无法想象一个多文件差分(独立于版本控制系统)会是什么样子。时间演变视图已经非常方便了,但是它应该如何同时工作于几个文件呢? - pitseeker
@kmort 我担心这听起来像是一个非常专业的工具。在我看来,对你最有用的工具可能是timelapseview。 另外,如果我理解正确,你想一次性查看对某个文件所做的多个更改(在一个diff中)。这怎么可能呢?你只能比较两个版本。你也可以使用三向比较/合并来比较三个版本。但是“n”个版本呢?除了没有相应的工具之外,我甚至认为从理论上讲这是不可行的。但也许我还没有完全理解问题。 - pitseeker
显示剩余4条评论
1个回答

1
我会这样做:使用p4 edit、sync和resolve的组合来构建我想要在工作区中进行的更改集。基本过程如下:
  1. 同步到变更A(假设它是序列的开始)
  2. 打开所有文件以进行编辑
  3. 同步到变更B-1(这将安排一个解决方案)
  4. 运行p4 resolve并忽略更改(-ay)
  5. 同步变更B(这将安排一个解决方案)
  6. 处理任何冲突,解决变更B
  7. 同步到变更C-1
  8. 解决并忽略更改
  9. 同步变更C
  10. 合并更改并解决
  11. 与head进行差异比较

谢谢Matt。这将完成我所要求的。我希望有更自动化的东西,但我认为你已经展示了Perforce目前最好的功能。 - kmort
我有同样的问题。我正在跨多个更改列表进行代码审查,这是一个耗时的噩梦。@matt的答案看起来很棒,只要我能理解它就好了。哈哈,让我困惑的是从具有更改列表A、B和C到同步到B-1和C-1的跳转。我不明白B-1和C-1是什么。 - Keith
实际上是比 A、B 和 C 的 changelist 编号小 1。因此,如果您想查看更改 123(A)、456(B) 和 789(C) 的综合效果,则应同步到 123,打开所有内容进行编辑,然后同步到 455,解决 -ay 以忽略所有这些更改,最后同步到 456 以仅获取该更改的内容。 - Matt
谢谢Matt,我一直都把它读成“连字符一”而不是“减号一”。哈哈,非常感谢。 - Keith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接