获取提交的标签

Uko*_*Uko 1 python git commit git-tag gitpython

给定一个 GitPython Commit 对象,如何获取与此提交相关的标签?

我喜欢有这样的东西:

next(repo.iter_commits()).tags
Run Code Online (Sandbox Code Playgroud)

lar*_*sks 6

问题是标签指向提交,而不是相反。要获得此信息,需要对所有标签进行线性扫描,以找出哪些标签指向给定的提交。你可能会自己写一些东西来做到这一点。以下内容将为您提供一个 commit-to-tags 字典:

tagmap = {}
for t in repo.tags():
  tagmap.setdefault(r.commit(t), []).append(t)
Run Code Online (Sandbox Code Playgroud)

对于给定的提交,您可以从以下位置获取与其关联的任何标签:

tags = tagmap[repo.commit(commit_id)]
Run Code Online (Sandbox Code Playgroud)