From 64b3319dc98c27c8c798f31b4d87ea252ba70c41 Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Wed, 23 Mar 2016 20:05:31 +0100 Subject: [PATCH] new_release: use sha from corresponding stable branches Before the fix, sha values were always extracted from master head, even when series has a stable branch. Change-Id: I9810660df7a92c021cd9c154bb3f24d8d828bfd7 --- openstack_releases/cmds/new_release.py | 9 ++++++++- openstack_releases/gitutils.py | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/openstack_releases/cmds/new_release.py b/openstack_releases/cmds/new_release.py index 4520e8e3d1..4dc6020e71 100644 --- a/openstack_releases/cmds/new_release.py +++ b/openstack_releases/cmds/new_release.py @@ -104,7 +104,14 @@ def main(): projects = [] for project in last_release['projects']: gitutils.clone_repo(workdir, project['repo']) - sha = gitutils.sha_for_tag(workdir, project['repo'], 'HEAD') + + branches = gitutils.get_branches(workdir, project['repo']) + version = 'origin/stable/%s' % series + if not any(branch for branch in branches + if branch.endswith(version)): + version = 'master' + + sha = gitutils.sha_for_tag(workdir, project['repo'], version) projects.append({ 'repo': project['repo'], 'hash': sha, diff --git a/openstack_releases/gitutils.py b/openstack_releases/gitutils.py index c27f1ada98..ae6e91f324 100644 --- a/openstack_releases/gitutils.py +++ b/openstack_releases/gitutils.py @@ -113,3 +113,20 @@ def get_latest_tag(workdir, repo): print('WARNING failed to retrieve latest tag: %s [%s]' % (e, e.output.strip())) return None + + +def get_branches(workdir, repo): + try: + output = subprocess.check_output( + ['git', 'branch', '-a'], + cwd=os.path.join(workdir, repo), + stderr=subprocess.STDOUT, + ).strip() + return [ + branch + for branch in output.split() + ] + except subprocess.CalledProcessError as e: + print('ERROR failed to retrieve list of branches: %s [%s]' % + (e, e.output.strip())) + return []