GitPython: получить текущий тег (отдельная голова)

Я использую библиотеку gitpython.

Если локальный git находится в проверенном теге, я хочу получить имя тега.

repo=git.Repo(repo_dir)
repo.tag # --> tags. But which is the current?

В командной строке инструмент git знает это. Пример

user@host> git status
HEAD detached at release/1.2.3

Я хочу получить строку «релиз/1.2.3» через gitpython.


person guettli    schedule 11.09.2015    source источник


Ответы (2)


Вы можете перебирать теги и сравнивать каждый коммит тега с текущим коммитом головы:

next((tag for tag in repo.tags if tag.commit == repo.head.commit), None)
person AndreyT    schedule 11.09.2015
comment
Пожалуйста, отредактируйте свой пост, чтобы добавить больше объяснений о том, что делает ваш код и почему он решит проблему. Ответ, который в основном просто содержит код (даже если он работает), обычно не поможет ОП понять их проблему. - person SuperBiasedMan; 11.09.2015
comment
@AndreyT спасибо. трюк next() был для меня новым. Он возвращает первое совпадение или None. Для других людей: next(iter([1, 2, 3]), None) --> 1 - person guettli; 15.09.2015

Похоже, вы можете получить то, что хотите, с помощью GitCmd вызывает describe.

g = Git(git_dir)
rval = g.describe()

Я не вижу никакого способа получить прямой доступ к этой информации.

person Wolf    schedule 11.09.2015
comment
или с помощью repo.git.describe(). - person Ioannis Filippidis; 29.11.2015