【问题标题】:Get the changelist number of current workspace directory获取当前工作区目录的变更列表编号
【发布时间】:2012-04-01 15:37:04
【问题描述】:

每次构建时,我们都必须记录源文件的更改列表数量以进行跟踪。我们有不同的项目(在不同的目录下),它们以不同的变更列表编号同步。能否请您告诉我如何获取特定目录的更改列表编号?

感谢任何建议。谢谢和最好的问候

【问题讨论】:

  • 也许一个标签会很有用。标签可以记录你构建的文件的修订版本。
  • 感谢大家的建议!

标签: perforce


【解决方案1】:

如果您的构建系统总是在构建之前同步到目录的头部,您可以使用p4 changes -m 1 //path/to/your/project/... 获取该目录的头部更改列表编号。

如果您使用这种方法,我建议在同步之前运行更改命令,然后显式同步到该更改列表。这应该消除有人在更改命令和同步命令之间签入的机会。

【讨论】:

    【解决方案2】:

    此外,还有p4 changes -m1 //path/to/your/project/...#have,如果在同步文件以进行构建的客户端工作区中运行,它将为您提供工作区中文件的最高变更列表编号。

    【讨论】:

    • 这看起来不错,但我得到“请求太大(超过 550000);请参阅 'p4 help maxresults'。”错误。我就是喜欢 Perforce,充满了惊喜……
    • 出于某种原因,工作区根目录中的p4 changes -m1 ...#have 给了我一个比同步工作区早 2 天的修订版。为什么会这样?
    • 这给出了提交的变更列表,如果它存在,我们如何获得待处理的变更列表?
    【解决方案3】:

    如果不想指定目录,也可以使用短版p4 changes -m1 #have

    如果您使用“#”是 bash 之类的注释字符的 shell,请记住将其转义如下:p4 changes -m1 \#have

    【讨论】:

    • 请注意,这与包含 depot 路径的 user1054341 的答案不同。此版本似乎包含客户端尚未同步的更改。
    • 是的,没有。就像可溶鱼说的那样,这提供了服务器上最新的更改列表,这根本不是我将客户端视图同步到的更改列表。
    • 单引号在类似 bash 的 shell 中工作 p4 changes -m1 '#have'
    【解决方案4】:
    p4 cstat //path/to/your/project...#have |grep -B1 have|tail -n2
    

    @thegeco,这不需要高 max_scanrows perforce 限制

    【讨论】:

    • “高 max_scanrows perforce 限制”是什么意思?
    • 查看上面接受的答案以及thegeko(不是thegeco)关于它失败的评论,因为请求太大
    • 看起来避免“请求太大”错误的秘诀不是这个特定的命令,而是给 Perforce 一个 depot 路径,而不是 本地路径。使用仓库路径,p4 changes ... #have 也可以。
    【解决方案5】:

    我在 P4V 客户端中使用“懒惰的手动方式”(也就是我不知道更好):

    在“提交”选项卡过滤器中使用它://yourproject/...#>have 它会告诉你哪些 CL 没有同步,注意最旧的。 删除 #>have 过滤器,看看你刚才提到的那个之前的 CL 是什么。

    【讨论】:

      【解决方案6】:

      就我而言,我只想知道在特定目录中打开(未同步到)哪个更改列表编号。为此,我愿意:

      p4 opened -s | cut -d' ' -f5 | uniq
      

      【讨论】:

      • 当然,但这不是 OP 所要求的
      猜你喜欢
      • 2012-07-22
      • 2011-12-06
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 2016-04-05
      • 2013-05-14
      相关资源
      最近更新 更多