Резюме
Предлагает ли Bitbucket server (не Cloud) API эквивалент git merge-base branch1 branch2
для поиска общего предка двух ветвей?
Подробности
Мы хотели бы использовать API Bitbucket, чтобы определить, когда функциональная ветвь устарела, т. е. не была перебазирована или объединена с основной или какой-либо другой основной ветвью (разработка, выпуск и т. д.) в течение некоторого времени — скажем, недели. Я вижу следующую конечную точку REST
/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=release/1.2.3&until=bugfix'
Это может дать все коммиты not on release/1.2.3
в приведенном выше примере. В случае перебазированной ветки это нормально - я просто найду самую старую фиксацию для конкретной ветки, а ее родителем является база слияния.
Однако некоторые люди объединяют коммиты для обновления ветки функций (например, git merge release/1.2.3
в ветке функций), и лучшее, что я могу придумать, это:
- Разобрать сообщение фиксации для
Merge branch 'release/1.2.3' of <repo> into bugfix
, которое кажется хрупким, потому что кто-то может переписать сообщение фиксации слияния. - Найдите самую последнюю фиксацию с двумя родителями, возьмите вторую (кажется, исходную ветку), найдите ее в исходной ветке и, если найдете, используйте ее как основу для определения возраста общего предка.