Мы используем gitflow в моей организации, в частности, концепцию веток релизов. Мы также поддерживаем несколько веток одновременного выпуска. Пример репо может выглядеть так:
master -> a
\
\ c <-release/v1.0.0 e <-release/v1.1.0 g <-release/v1.2.0
\ / / /
develop-> b ---------------------d---------------------f
Что я хотел бы сделать, так это получить текущую проверенную ветку релиза, найти ветку релиза предшественника. Например:
-release/v1.2.0 is checked out, return release/v1.1.0
-release/v1.1.0 is checked out, return release/v1.0.0
-release/v1.0.0 is checked out, return nothing, there is no currently active previous release
Мы используем это, чтобы определить, какие файлы изменились между выпусками для развертывания в устаревшей системе.
Допущения: ветви выпуска всегда будут следовать формату release/v.x.y.z
, где x, y и z - номера версий. Ветви релизов всегда организованы последовательно на основе этих номеров версий. v1.2.1 > v1.2.0
и v1.2.0 > 1.1.0
Я подумал об использовании некоторой комбинации git branch --list -a *release/v*
для получения списка всех веток релиза и некоторых команд perl для сортировки результатов, но мне было интересно, есть ли какие-нибудь команды git вдоль вены git rev-parse
или git rev-list
это могло бы сделать это.
Примечания: я использую z / OS USS-порты инструментов Unix, git, bash, grep и т. Д.