Perforce 获取当前工作区目录的变更列表编号

Perforce 获取当前工作区目录的变更列表编号,perforce,Perforce,每次进行构建时,我们都必须记录源文件的变更列表编号以进行跟踪。我们在不同的目录下有不同的项目,它们以不同的变更列表编号同步。您能告诉我如何获得特定目录的变更列表号吗 如有任何建议,我们将不胜感激。感谢并致以最诚挚的问候如果您的构建系统在构建之前始终同步到目录上,那么您可以使用p4更改-m 1//path/to/your/project/。。。获取该目录的头变更列表编号 如果使用此方法,我建议在同步之前运行changes命令,然后显式同步到该变更列表。这将消除有人在changes命令和sync命令

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


如有任何建议,我们将不胜感激。感谢并致以最诚挚的问候

如果您的构建系统在构建之前始终同步到目录上,那么您可以使用p4更改-m 1//path/to/your/project/。。。获取该目录的头变更列表编号


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

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

如果您不想指定目录,也可以使用p4 changes-m1的简短版本

如果您使用的shell是bash之类的注释字符,请记住按如下方式对其进行转义:p4 changes-m1\have


@GECO,这不需要高的最大扫描行性能限制

我在P4V客户端中使用了我不太了解的惰性手动方式:

在提交的选项卡filters://yourproject/…>中使用此选项 它会显示哪些CLs没有同步,请注意最老的一个。
移除>have过滤器,查看在您刚才提到的之前出现的CL是什么。

在我的例子中,我只想知道在特定目录中打开的更改列表编号没有与之同步。为此,我愿意:

p4 opened -s | cut -d' ' -f5 | uniq
在P4V客户端中,您可以:

打开“提交”选项卡 在“过滤器:下拉列表”下选择文件 选择当前仓库或工作空间树选择 按更改排序,顶行将是您的答案
也许一个标签会有用。标签可以记录您构建的文件的修订。感谢大家的建议!请注意,这与user1054341的答案(包括depot路径)不同。这个版本似乎包含了客户端尚未同步的更改。是的,不是。正如solublefish所说,这会给出服务器上最新的更改列表,这根本不是我将客户端视图同步到的变更列表。@solublefish@damian我认为您的shell可能会默默地忽略have部分,因为该命令的工作方式与广告完全相同。单引号在bash中的工作方式类似于shell p4 changes-m1'have',这看起来很棒,但我收到的请求太大,超过550000;请参阅“p4帮助maxresults”。错误我只是喜欢Perforce,所以充满了惊喜…出于某种原因,工作区根目录中的p4更改-m1…给了我比同步工作区的日期早2天的修订。为什么会这样?这给出了提交的变更列表,如果存在,我们如何获得待处理的变更列表?你说的最高性能限制是什么意思?请参阅上面接受的答案和GEKO而非GECO关于其失败的评论,因为请求太大,但这不是OP所要求的
p4 opened -s | cut -d' ' -f5 | uniq