Итак, мне нужно решить следующую проблему:
Допустим, у меня около 100 веток, в которые можно интегрировать CL, но моя задача - найти все ветки, в которых был интегрирован исходный CL100.
Как это сделать? Мои товарищи по команде делали это вручную (на поиск всех веток уходят часы, а иногда и дни).
Мне просто интересно, есть ли какой-нибудь инструмент для перечисления всех ветвей, в которые был интегрирован исходный CL? Если его нет, что было бы начальной отправной точкой для написания скрипта для этого?
Я пробовал использовать
p4 -ztag changes -i //depot/...@123,@123
но он показывает только историю интеграции CL - не совсем то, что я ищу.
Графический вариант - использовать инструмент Revision Graph. Откройте файл в Revision Graph, выберите ревизию, используйте опцию «Выделить потомков», затем отфильтруйте «Показать только выделенные файлы».
Если вы хотите реализовать это самостоятельно в коде, по сути, он просто рекурсивно запускает p4 filelog
, а затем выполняет простой поиск графа по полученной структуре. К сожалению, P4V не является открытым исходным кодом, но базовая структура данных IIRC Revision Graph все еще та же, что и в старом моде Half-Life, который аналогичным образом показывал историю ветвлений; это было бы отправной точкой (заранее прошу прощения у всех, кто читает этот код - это был буквально мой первый проект кодирования C++, так что он немного грубоват): https://swarm.workshop.perforce.com/files/guest/sam_stafford/p4hl/src/dlls/FileLogCache.h