在perforce中查看流历史记录

在perforce中查看流历史记录,perforce,Perforce,是否有办法查看在perforce中的流上下文中创建的所有变更列表?我对命令行方式感兴趣 类似的问题:假设我有一个流和它的父流。有可能找到他们最新共同祖先的变更列表吗 如果您不仅想查看本地做出的更改,还想查看通过导入包含的更改,最简单的方法是切换到该流并在当前客户端的上下文中运行查询: p4 switch STREAMNAME p4 changes //CLIENTNAME/... 本地所做的更改通常位于与流名称匹配的仓库路径中(例如//stream/STREAMNAME/…),但如果使用imp

是否有办法查看在perforce中的流上下文中创建的所有变更列表?我对命令行方式感兴趣


类似的问题:假设我有一个流和它的父流。有可能找到他们最新共同祖先的变更列表吗

如果您不仅想查看本地做出的更改,还想查看通过导入包含的更改,最简单的方法是切换到该流并在当前客户端的上下文中运行查询:

p4 switch STREAMNAME
p4 changes //CLIENTNAME/...
本地所做的更改通常位于与流名称匹配的仓库路径中(例如
//stream/STREAMNAME/…
),但如果使用
import+
,则不一定如此(尽管如果使用
import+
,则在特定流上下文中所做更改的概念完全消失)


找到一个“最新共同祖先”的决定因素,取决于你想用这个祖先做什么,你认为它是一个“共同祖先”,甚至是什么“最新的”意思(最新的词)意味着最新的时间顺序,但这并不一定是“最接近”的“最共同的”。一些可能有用的一般方法:

  • 使用
    p4 istat
    命令查看上次合并/复制操作发生的时间以及每个操作所包含的最新更改
  • 对每个流使用
    p4 changes-i
    命令查看它包含哪些变更列表(包括集成的祖先),并使用diff查找公共祖先
  • 使用
    p4 integrate-o
    命令查看每个文件的合并基础,并获取与
    p4更改
    p4文件
    相关的更改列表

  • 感谢Sam Stafford指出这一点

    首次使用

    p4 interchanges -S <child_stream_name>
    
    p4互通式立交-S
    
    这将为您提供尚未复制到父分支的更改列表


    要查看差异,您可以在列表中的每个更改列表上使用“p4 description”。

    p4 changes//Stream/name/…
    是第一个问题的良好起点,而
    p4 interchanges
    是第二个问题的良好起点。关于最新的常见问题,使用场景如下:我有一个子流(假设我正在实现一个功能),我希望看到在该流上所做的更改,但这些更改尚未复制到父流。所谓“最新的共同祖先”,我指的是父流的最新变更列表,该变更列表已合并到子流。如果我能找到变更列表,我可以更新到该快照,然后将其与孩子的头部进行比较。等等——你的问题一直都是“我如何构建自己版本的
    p4 interchanges
    命令?”你为什么要这样做,而不仅仅是使用现有的命令?:)我提出一个问题,因为我不知道现有的命令是什么。很简单:在子流上有一个特性。我希望能够看到已经完成的工作(即具有最新共同祖先或任何等效物的差异),以及理想情况下导致这些更改的提交顺序。
    p4交换
    是您需要的命令。它按照我在回答第二个问题的第3部分中的建议,以您在第一个问题中要求的形式给出输出,并且还实现了您需要在脚本中编写的逻辑。