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

时间:2011-04-21 21:07:53

标签: perforce

给定Perforce更改列表编号,我想查找该挂起更改列表中所有文件的本地路径。

  • p4描述更改列表 - 获取更改列表中文件的库路径(方法1)
  • p4已打开-c changelist - 获取更改列表中文件的库路径(方法2)
  • p4 - 获取以前提交过的所有文件的软件仓库路径和本地路径

结合使用 p4 describe p4 ,我可以找到更改列表中之前已提交给Perforce的所有文件的本地路径(并且已打开) 删除编辑)。

但是为添加打开的文件呢? p4 添加打开的文件一无所知。

鉴于待定的Perforce更改列表,如何找到即将添加到Perforce的文件的本地路径?

5 个答案:

答案 0 :(得分:11)

要输出更改列表的所有待处理添加的本地路径,您可以使用:

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}'

答案 1 :(得分:6)

你当然也可以使用

p4 -ztag opened -c changelist

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

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

替换//客户端/与客户端的根目录留给读者。

答案 2 :(得分:3)

未使用任何外部或平台特定工具的待处理更改列表中所有文件的本地路径:

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

删除' -F action = add'如果你想为所有行动打开文件。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

基于Peter G的回答,翻译成powershell 2.0:

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