在Perforce中,我如何在挂起的变更列表中找到文件的本地路径



给定一个Perforce更改列表号,我想找到该待挂更改列表中所有文件的本地路径。

  • p4描述变更列表——获取变更列表中文件的仓库路径(方法1)
  • p4打开-c changelist——获取变更列表中文件的仓库路径(方法2)
  • p4 have——让我获得以前提交的所有文件的仓库路径和本地路径

使用p4描述p4 have的组合,我可以找到以前提交给Perforce的更改列表中所有文件的本地路径(并为deleteedit打开)。

但是对于add打开的文件呢?p4 have不知道对于add打开的文件。

给定一个挂起的Perforce变更列表,我如何找到即将添加到Perforce的文件的本地路径?

要输出变更列表中所有挂起的添加的本地路径,可以使用:

p4 opened -c changelist | grep -w add | sed 's/#.*//' 
| p4 -x - where | awk '/^// {print $3}'

在没有grep的情况下也可以这样做,但是有点晦涩:

p4 opened -c changelist | sed -n 's/(.*)#.*- add .*/1/p' 
| p4 -x - where | awk '/^// {print $3}'

当然你也可以使用

p4 -ztag opened -c changelist

这将报告每个打开文件的depotFile和clientFile。只列出客户端文件:

p4 -ztag opened -c changelist | grep clientFile | awk '{print $3}'

将//client/替换为客户端的根目录留给读者作为练习。

在没有任何外部或特定于平台工具的情况下,挂起变更列表中所有文件的本地路径:

p4 -F %clientFile% fstat -Ro -F action=add [-e CHANGE] //...

删除'-F action=add'如果你想打开所有操作的文件

p4 opened -s -c <changelist#> | awk -F " " '{print $1}' | p4 -x - where | awk -F " " '{print $3}'

根据Peter G的回答,翻译成powershell 2.0:

p4 opened -c changelist 
    | Where-Object{$_ -match "add"}
    | ForEach-Object{p4 where ($_.split('#')[0])}
    | ForEach-Object{$_.split()[2]}

最新更新