在Perforce中,如何在挂起的变更列表中找到文件的本地路径?
给定Perforce变更列表编号,我想找到挂起的变更列表中所有文件的本地路径在Perforce中,如何在挂起的变更列表中找到文件的本地路径?,perforce,Perforce,给定Perforce变更列表编号,我想找到挂起的变更列表中所有文件的本地路径 p4描述变更列表——获取变更列表中文件的仓库路径(方法1) p4 opened-c changelist——获取变更列表中文件的仓库路径(方法2) p4 have--获取以前提交的所有文件的仓库路径和本地路径 通过组合使用p4 descripe和p4 have,我可以找到变更列表中以前提交给Performance的所有文件的本地路径(并打开以删除或编辑) 但是为添加而打开的文件呢p4 have不知道为添加而打开的文
- p4描述变更列表——获取变更列表中文件的仓库路径(方法1)
- p4 opened-c changelist——获取变更列表中文件的仓库路径(方法2)
- p4 have--获取以前提交的所有文件的仓库路径和本地路径
给定一个挂起的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}'
根据Peter G的答案,翻译成powershell 2.0:
p4 opened -c changelist
| Where-Object{$_ -match "add"}
| ForEach-Object{p4 where ($_.split('#')[0])}
| ForEach-Object{$_.split()[2]}
当然,你也可以使用
p4 -ztag opened -c changelist
这将报告每个打开文件的depotFile和clientFile。
要仅列出客户端文件,请执行以下操作:
p4 -ztag opened -c changelist | grep clientFile | awk '{print $3}'
将//client/替换为客户机的根目录,留给读者作为练习。p4 opened-s-c | awk-F”“{print$1}'| p4-x-其中| awk-F”“{print$3}”
p4 opened -s -c <changelist#> | awk -F " " '{print $1}' | p4 -x - where | awk -F " " '{print $3}'
挂起变更列表中所有文件的本地路径,无任何外部或平台特定工具:
p4 -F %clientFile% fstat -Ro -F action=add [-e CHANGE] //...
如果要为所有操作打开文件,请删除'-F action=add'。谢谢您的解决方案。“p4 where”有一点需要注意——如果一个文件在客户端规范中被多次映射,那么“p4 where”将错误地返回第一个映射,而不是文件真正结束的最后一个映射。这听起来像是一个错误,
p4 where
应该跟随客户端视图。如果您有支持,请向perforce提交一个bug。问题与{print$3}
有关吗?@tenpn,再次提请注意。最后我自己尝试了多个映射p4,其中
在这种情况下输出多行,并且只有以“/”开头的行是正确的。我更正了这个案例的答案。请记住,awk具有grep功能,因此您可以将其缩短为:p4-ztag opened-c changelist | awk'/clientFile/{print$3}'
在所有发布的答案中,这是唯一一个真正适合我的。谢谢