summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark McLoughlin <markmc@redhat.com>2013-01-25 14:01:14 +0000
committerMark McLoughlin <markmc@redhat.com>2013-01-25 17:24:24 +0000
commit6b3c54482171941c3bebccc52922036d3e478223 (patch)
tree3df252852226e7d53b8a76133b0abd1ba2c264ad
parent416e92d728b351a5ffbbbf0dda4973d41b1a7947 (diff)
downloadoslo-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.py20
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('-', '.')