Git Bitbucket服务器API:查找分支';s合并基 总结
Bitbucket服务器(不是云)API是否提供了与git merge base branch1 branch2等价的方法来查找两个分支的共同祖先 细节 我们希望使用Bitbucket API来确定某个功能分支何时“太旧”,即在一段时间内(比如一周内)没有从master或其他某个主要分支(开发、发布等)重新设置基础或合并到其中。我看到了以下REST端点Git Bitbucket服务器API:查找分支';s合并基 总结,git,bitbucket,bitbucket-server,Git,Bitbucket,Bitbucket Server,Bitbucket服务器(不是云)API是否提供了与git merge base branch1 branch2等价的方法来查找两个分支的共同祖先 细节 我们希望使用Bitbucket API来确定某个功能分支何时“太旧”,即在一段时间内(比如一周内)没有从master或其他某个主要分支(开发、发布等)重新设置基础或合并到其中。我看到了以下REST端点 /rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=release/
/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=release/1.2.3&until=bugfix'
在上面的例子中,它可以给出所有不在版本/1.2.3
上的提交。对于重定基础的分支,这很好——我将只找到最早的特定于分支的提交,它的父级是合并基
但是,有些人确实会提交merge更新功能分支(例如,在功能分支上时,git merge release/1.2.3
),我能想到的最好办法是:
Merge branch'release/1.2.3'的提交消息解析为bug修复
,这似乎很脆弱,因为有人可能会重写合并提交消息查找合并基础的一个解决方法可能是检查
版本/1.2.3
的历史记录:
如果release/1.2.3
的历史记录足够有规律,也许您会有更好的时间查看
.../commits/?since=bugfix&until=release/1.2.3
并从此列表中获取最后一次提交的父级
我会建议添加一个
--第一个父项选项,但API似乎没有提供该标志。也许找到合并基础的一个解决方法是检查版本/1.2.3
的历史记录:
如果release/1.2.3
的历史记录足够有规律,也许您会有更好的时间查看
.../commits/?since=bugfix&until=release/1.2.3
并从此列表中获取最后一次提交的父级
我会建议添加一个--第一个父项选项,但API似乎没有提供该标志。我没有尝试过,但理论上它应该可以工作
终点
/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=release/1.2.3&until=bugfix'
/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=R3&until=C4'
也适用于非重定基期的分支机构。此端点相当于
git rev-list bugfix ^release/1.2.3
这正是你需要的
bugfix C1---C2---C3----C4
/ / /
release/1.2.3 -R0----R1-------R2---R3
那么
git rev-list bugfix ^release/1.2.3
会回来的
C4
C3
C2
C1
因此,C1的父对象将作为重基的基础。
如果分支错误修复
将合并到版本/1.2.3
bugfix C1---C2---C3----C4--
/ / / \
release/1.2.3 -R0----R1-------R2---R3--R4--R5
在这种情况下,您需要通过
git rev-list ^bugfix release/1.2.3
或
这应该会回来
R5
R4
R3
因此,您需要遍历R5
、R4
和R3
,并检查C4
是否为父项。一旦找到R4
,您可以使用其父项并调用端点
/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=release/1.2.3&until=bugfix'
/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=R3&until=C4'
我没有试过,但理论上应该行得通
终点
/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=release/1.2.3&until=bugfix'
/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=R3&until=C4'
也适用于非重定基期的分支机构。此端点相当于
git rev-list bugfix ^release/1.2.3
这正是你需要的
bugfix C1---C2---C3----C4
/ / /
release/1.2.3 -R0----R1-------R2---R3
那么
git rev-list bugfix ^release/1.2.3
会回来的
C4
C3
C2
C1
因此,C1的父对象将作为重基的基础。
如果分支错误修复
将合并到版本/1.2.3
bugfix C1---C2---C3----C4--
/ / / \
release/1.2.3 -R0----R1-------R2---R3--R4--R5
在这种情况下,您需要通过
git rev-list ^bugfix release/1.2.3
或
这应该会回来
R5
R4
R3
因此,您需要遍历R5
、R4
和R3
,并检查C4
是否为父项。一旦找到R4
,您可以使用其父项并调用端点
/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=release/1.2.3&until=bugfix'
/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=R3&until=C4'
合并发布分支是否不会使分支“太旧”?您的标题是“Bibucket服务器API”:您是否正在寻找只使用API的解决方案?或者在repo的克隆上运行常规的git
命令可以吗?我正在寻找一个只使用API的解决方案。这是针对以轻量级方式运行的repo webhook接收器合并发布分支不会使分支“太旧”吗?您的标题是“Bibucket服务器API”:您是否正在寻找仅使用API的解决方案?或者在repo的克隆上运行常规的git
命令可以吗?我正在寻找一个只使用API的解决方案。这是一个以轻量级方式运行的回购webhook接收器,谢谢!我已经澄清了我所说的“太老”是什么意思。如在。我在一段时间内从父分支重新定基或合并。我没有找到通过API获得合并基础的方法(但话说回来,我对API没有太多经验,我只阅读文档);我编辑了我的答案,希望你能给我一个建议。谢谢你的关注,明天我会更详细地回顾这一切。谢谢!我已经澄清了我所说的“太老”是什么意思。如在。我在一段时间内从父分支重新定基或合并。我没有找到通过API获得合并基础的方法(但话说回来,我对API没有太多经验,我只阅读文档);我编辑了我的答案,希望你能给我一个建议。不管怎样,感谢你的关注,明天我会更详细地回顾这一切。谢谢你的全面回答,我会很快回顾这一切。谢谢你的全面回答,我会很快回顾这一切