Git Bitbucket服务器API:查找分支';s合并基 总结

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/

Bitbucket服务器(不是云)API是否提供了与git merge base branch1 branch2等价的方法来查找两个分支的共同祖先

细节 我们希望使用Bitbucket API来确定某个功能分支何时“太旧”,即在一段时间内(比如一周内)没有从master或其他某个主要分支(开发、发布等)重新设置基础或合并到其中。我看到了以下REST端点

/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修复
    ,这似乎很脆弱,因为有人可能会重写合并提交消息
  • 查找两个父级的最新提交,选择第二个(似乎是源分支),在源分支上查找它,如果找到,则将其作为确定常见ancenstor的年龄的基础

  • 查找合并基础的一个解决方法可能是检查
    版本/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没有太多经验,我只阅读文档);我编辑了我的答案,希望你能给我一个建议。不管怎样,感谢你的关注,明天我会更详细地回顾这一切。谢谢你的全面回答,我会很快回顾这一切。谢谢你的全面回答,我会很快回顾这一切