我们在组织内部使用gitflow,尤其是发布分支的概念。我们还支持多个同时发布的分支。示例回购可能看起来像这样:
master -> a
\
\ c <-release/v1.0.0 e <-release/v1.1.0 g <-release/v1.2.0
\ / / /
develop-> b ---------------------d---------------------f
我想做的是给一个当前已签出的release分支,找到先前的release分支。例如:
-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分支将始终遵循格式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 rev-parse
的脉络中是否有一些git命令或git rev-list
可以做到的。
注意:我正在使用unix工具的z / OS USS端口,git,bash,grep等。
答案 0 :(得分:2)
首先(在最新的Git 2.21中)检查sort order for tags是否可用于分支:
git branch --sort=version:refname
这样,您可以在git grepping之前获得正确的顺序。
答案 1 :(得分:1)