给定Perforce更改列表编号,我想查找该挂起更改列表中所有文件的本地路径。
结合使用 p4 describe 和 p4 ,我可以找到更改列表中之前已提交给Perforce的所有文件的本地路径(并且已打开) 删除或编辑)。
但是为添加打开的文件呢? p4 对添加打开的文件一无所知。
鉴于待定的Perforce更改列表,如何找到即将添加到Perforce的文件的本地路径?
答案 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]}