1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-11-04 22:40:12 +01:00

Use hash of tag when adding new version

Also extend getref with a refname parameter and implement it for
vcs_git.
This commit is contained in:
Jochen Sprickerhof 2021-06-12 15:02:58 +02:00 committed by Jochen Sprickerhof
parent 35cf7f289e
commit cd405cc93e
2 changed files with 18 additions and 3 deletions

View File

@ -217,6 +217,12 @@ def check_tags(app, pattern):
hver = version
if hver:
try:
commit = vcs.getref(htag)
if commit:
return (hver, hcode, commit)
except VCSException:
pass
return (hver, hcode, htag)
return (None, "Couldn't find any version information", None)

View File

@ -1026,7 +1026,7 @@ class vcs:
"""Get a list of all the known tags, sorted from newest to oldest"""
raise VCSException('latesttags not supported for this vcs type')
def getref(self):
def getref(self, revname=None):
"""Get current commit reference (hash, revision, etc)"""
raise VCSException('getref not supported for this vcs type')
@ -1205,6 +1205,15 @@ class vcs_git(vcs):
tags.append(tag)
return tags
def getref(self, revname='HEAD'):
self.checkrepo()
p = FDroidPopen(['git', 'rev-parse', '--verify',
'{revname}^{{commit}}'.format(revname=revname)], cwd=self.local,
output=False)
if p.returncode != 0:
return None
return p.output.strip()
class vcs_gitsvn(vcs):
@ -1366,9 +1375,9 @@ class vcs_gitsvn(vcs):
if os.path.isdir(d):
return os.listdir(d)
def getref(self):
def getref(self, revname='HEAD'):
self.checkrepo()
p = FDroidPopen(['git', 'svn', 'find-rev', 'HEAD'], cwd=self.local, output=False)
p = FDroidPopen(['git', 'svn', 'find-rev', revname], cwd=self.local, output=False)
if p.returncode != 0:
return None
return p.output.strip()