Skip to content

Instantly share code, notes, and snippets.

@ThomasChiroux
Last active November 22, 2021 11:50
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ThomasChiroux/3752353 to your computer and use it in GitHub Desktop.
Save ThomasChiroux/3752353 to your computer and use it in GitHub Desktop.
get mercurial (hg) current version on a repo (last tag and rev number)
# -*- coding: utf-8 -*-
"""get version number from dvcs
"""
from subprocess import Popen, PIPE
def get_hg_version():
"""uses mercurial to get last tag and last revision number
if repo has just been tagged, return 'lasttag'
if not, return 'lasttag-lastrevnum'
"""
try:
p = Popen(["hg", "log", "--limit", "1",
"--template", "{latesttag};{rev}"],
stdout=PIPE, stderr=PIPE)
p.stderr.close()
line = p.stdout.readlines()[0]
latest_tag, latest_rev = line.strip().split(';')
p = Popen(["hg", "log", "--limit", "1",
"-r", '"%s"' % latest_tag,
"--template", "{rev}"],
stdout=PIPE, stderr=PIPE)
p.stderr.close()
line = p.stdout.readlines()[0]
latest_tag_rev = line.strip()
if int(latest_tag_rev) == int(latest_rev) - 1:
# here our version has just been tagged,
# return only version number
return latest_tag
else:
# we have commits since last tag, return tag-commit
return "%s-%s" % (latest_tag, latest_rev)
except:
return None
if __name__ == '__main__':
print get_hg_version()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment