【发布时间】:2020-06-27 15:24:24
【问题描述】:
是否有任何 perforce 命令或 p4 util 可用于从仓库路径中提取分支名称。 例如,我的仓库位置为“//depot/folder/suffix”,分支名称为“b-folder-suffix”。 如何从 depot 获取分支名称?有可能得到那种映射吗?
注意:我不是在寻找 RegEx。
【问题讨论】:
标签: perforce perforce-client-spec p4python
是否有任何 perforce 命令或 p4 util 可用于从仓库路径中提取分支名称。 例如,我的仓库位置为“//depot/folder/suffix”,分支名称为“b-folder-suffix”。 如何从 depot 获取分支名称?有可能得到那种映射吗?
注意:我不是在寻找 RegEx。
【问题讨论】:
标签: perforce perforce-client-spec p4python
这是一个不使用任何正则表达式的小型 Perl 脚本:
foreach(`p4 -F %domainName% branches`) {
chomp;
if (`p4 -F %code0% populate -fn -b $_ -s $ARGV[0]` != 554768862) { print $_."\n"; }
}
示例输出(每个分支映射//depot/main,但只有foo 映射//depot/foo):
C:\Perforce\test>p4 branches
Branch bar 2020/03/16 'Created by Samwise. '
Branch foo 2020/03/16 'Created by Samwise. '
Branch spaces 2020/03/16 'Created by Samwise. '
C:\Perforce\test>perl get-branch.pl //depot/foo/bleh
foo
C:\Perforce\test>perl get-branch.pl //depot/main/bleh
bar
foo
spaces
它的工作原理是在具有指定文件路径的每个分支规范上运行 populate 命令,并查找特定的错误消息 no source file(s) in branch view(这是错误代码 554768862;我通过玩 p4 -e populate ... 得到了这个) .如果它没有收到该消息,则假定路径是由分支视图映射的。请注意,编写的这个脚本在面对其他错误(例如权限)时并不可靠。
【讨论】: