work around bug in TagReference.commit() if many tags target the same commit (fixes #9116)
This commit is contained in:
parent
d95acfd61e
commit
8f491a8e34
|
@ -9,6 +9,13 @@ import git
|
|||
from git.exc import GitCommandError
|
||||
from git.objects.commit import Commit
|
||||
|
||||
def get_commit_from_tag(repo, tag_ref):
|
||||
ref = repo.tags[tag_ref]
|
||||
while ref.object.type == 'tag':
|
||||
ref = ref.object
|
||||
assert ref.object.type == 'commit'
|
||||
return ref.object
|
||||
|
||||
def changelog_from_git(project, version_suffix, path,
|
||||
repository='eobuilder',
|
||||
maintainer_name='eobuilder',
|
||||
|
@ -23,16 +30,16 @@ def changelog_from_git(project, version_suffix, path,
|
|||
# no tag version is 0.0.<number of commits>
|
||||
versions.append(('0.0.%d' % len(repo.head.log()), repo.head.commit))
|
||||
else:
|
||||
if repo.tags[last_tag].commit != repo.head.commit:
|
||||
if get_commit_from_tag(repo, last_tag) != repo.head.commit:
|
||||
versions.append((repo.git.describe(), repo.head.commit))
|
||||
versions.append((last_tag, repo.tags[last_tag].commit))
|
||||
versions.append((last_tag, get_commit_from_tag(repo, last_tag)))
|
||||
while True:
|
||||
try:
|
||||
last_tag = repo.git.describe(last_tag+'~', abbrev=0)
|
||||
except GitCommandError:
|
||||
break
|
||||
else:
|
||||
versions.append((last_tag, repo.tags[last_tag].commit))
|
||||
versions.append((last_tag, get_commit_from_tag(repo, last_tag)))
|
||||
n = len(versions)
|
||||
for i in range(n):
|
||||
name, commit = versions[i]
|
||||
|
|
Loading…
Reference in New Issue