从发布分支上的构建所关注的开发中检索功能列表

问题描述

我们有兴趣制作一个脚本来简化我们的构建过程。

为此,我们需要列出自上次构建以来合并到一个或多个开发分支的 Git 功能

我做了这个简单的例子,抱歉缺乏设计。

假设我们目前正在进行 build2 合并提交

我们想知道(从脚本中)提供了哪些功能,然后关注此构建

这些功能是 D7 和 D6,因为它们合并到各自的开发分支上。

可能难以忽略之前构建中已经存在的先前提交(D4、D3 等)以及有两个开发分支相继合并的事实。

我知道我们可以获得存在于一个分支而不是另一个分支上的合并提交。

使用类似:

git log --oneline --merges --abbrev-commit origin/develop/$BRANCH...origin/release/$BRANCH

但是当使用多个开发或项目分支时,这会变得更加复杂。 并且可能会返回误报。

(可能存在会改变行为的冲突解决提交)

有没有更好的主意来做这样的事情?

解决方法

由于您在注释中添加了在每次构建之前将两个 dev 分支合并到 release 中,因此您可以通过以下方式列出构建之间的提交:

git log --oneline --no-merges build1..build2

...应该只返回提交 D6 和 D7。

(作为记录,git 中的 A..B(两个点)范围表示“所有可以从 B 到达但不能从 A 到达的东西”。A...B 构造(三个点)是不同的事情,这是A和B之间的对称差异,所以就像问A..BB..A)

注意:--no-merges 选项是仅获取“有用”提交的典型方式,但您的上下文(解析合并消息)解释了您为什么需要 --merges

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...