Как получить ветку, на которой находится коммит?

Есть ли способ получить информацию о ветке (используя библиотеку libgit2), в идеале git_reference* из git_commit*?

То, что я пытаюсь сделать, это в основном получение информации о ветке из коммита.

Спасибо


person There is nothing we can do    schedule 30.11.2016    source источник
comment
Возможный дубликат Поиск ветки, из которой поступила фиксация git   -  person matias elgart    schedule 30.11.2016
comment
Я специально пометил его как libgit2   -  person There is nothing we can do    schedule 30.11.2016


Ответы (1)


Нет, нет никакого способа сделать это. Коммиты Git не находятся «на» ветке, вместо этого ветка является указателем на фиксацию. Таким образом, хранение данных идет в противоположном направлении. В результате многие ветки могут указывать на один и тот же коммит, поэтому невозможно получить одну ветку из коммита.

Вы можете найти все ветки, которые содержат данный коммит, но из-за довольно расплывчатого характера это не функциональность, которую предоставляет libgit2. Вы, безусловно, можете реализовать это самостоятельно, используя libgit2, revwalk просматривая интересующие вас ветки, чтобы увидеть, найден ли данный коммит. Но это будет очень разочаровывающим с точки зрения производительности.

person Edward Thomson    schedule 05.12.2016
comment
Привет, спасибо за ваш ответ. По крайней мере, я знаю, где я сейчас. С уважением - person There is nothing we can do; 06.12.2016