Извлечь имя ветки из пути депо p4

Есть ли какая-либо команда perforce или утилита p4 для извлечения имени ветки из пути хранилища. Например, у меня есть местоположение депо как "//depot/folder/suffix" и имя ветки как "b-folder-suffix". Как получить название ветки из депо? Можно ли получить такое отображение?

Примечание. Я не ищу RegEx.


person sha    schedule 16.03.2020    source источник


Ответы (1)


Вот крошечный 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 ...). Если он не получает это сообщение, он предполагает, что путь отображается представлением ветвления. Обратите внимание, что этот сценарий в том виде, в котором он написан, не является надежным перед лицом других ошибок (например, разрешений).

person Samwise    schedule 16.03.2020