diff options
author | Mark McLoughlin <markmc@redhat.com> | 2013-01-25 14:01:14 +0000 |
---|---|---|
committer | Mark McLoughlin <markmc@redhat.com> | 2013-01-25 17:24:24 +0000 |
commit | 6b3c54482171941c3bebccc52922036d3e478223 (patch) | |
tree | 3df252852226e7d53b8a76133b0abd1ba2c264ad | |
parent | 416e92d728b351a5ffbbbf0dda4973d41b1a7947 (diff) | |
download | oslo-6b3c54482171941c3bebccc52922036d3e478223.tar.gz oslo-6b3c54482171941c3bebccc52922036d3e478223.tar.xz oslo-6b3c54482171941c3bebccc52922036d3e478223.zip |
setup: count revs for revno if there are no tags
We currently use 'git describe --always' to figure out the number of
commits there have been leading up to the HEAD commit.
However, if there are no tags in the repo, git-describe just returns
the sha hash of HEAD and we fail.
In that case, use 'git rev-list HEAD | wc -l' so we can be #winning.
Change-Id: I345e0ee32189504276b3dfd3367057ce1d4a2b06
-rw-r--r-- | openstack/common/setup.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/openstack/common/setup.py b/openstack/common/setup.py index 81a3d20..cc8b99e 100644 --- a/openstack/common/setup.py +++ b/openstack/common/setup.py @@ -258,6 +258,22 @@ def get_cmdclass(): return cmdclass +def _get_revno(): + """Return the number of commits since the most recent tag. + + We use git-describe to find this out, but if there are no + tags then we fall back to counting commits since the beginning + of time. + """ + describe = _run_shell_command("git describe --always") + if "-" in describe: + return describe.rsplit("-", 2)[-2] + + # no tags found + revlist = _run_shell_command("git rev-list --abbrev-commit HEAD") + return len(revlist.splitlines()) + + def get_version_from_git(pre_version): """Return a version which is equal to the tag that's on the current revision if there is one, or tag plus number of additional revisions @@ -271,9 +287,7 @@ def get_version_from_git(pre_version): throw_on_error=True).replace('-', '.') except Exception: sha = _run_shell_command("git log -n1 --pretty=format:%h") - describe = _run_shell_command("git describe --always") - revno = describe.rsplit("-", 2)[-2] - return "%s.a%s.g%s" % (pre_version, revno, sha) + return "%s.a%s.g%s" % (pre_version, _get_revno(), sha) else: return _run_shell_command( "git describe --always").replace('-', '.') |