1

是否有任何 perforce 命令或 p4 util 可用于从仓库路径中提取分支名称。例如,我的仓库位置为“//depot/folder/suffix”,分支名称为“b-folder-suffix”。如何从 depot 获取分支名称?是否有可能获得这种映射?

注意:我不是在寻找 RegEx。

4

1 回答 1

0

这是一个不使用任何正则表达式的小型 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 ...)来工作。如果它没有收到该消息,则假定路径是由分支视图映射的。请注意,编写的这个脚本在面对其他错误(例如权限)时并不可靠。

于 2020-03-16T15:51:34.403 回答