check out a specific reference when cloning the repo

When cloning or updating the local copy of the repository, set the
working copy to a specific SHA so the validation steps can look at the
files on the filesystem.

Change-Id: I913b4608eae18c6e85982a5dff3b5388ad80eda6
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
Doug Hellmann
2017-01-30 16:08:43 -05:00
parent 876e667753
commit f16d58e021
2 changed files with 29 additions and 23 deletions

View File

@@ -64,30 +64,36 @@ def tag_exists(repo, ref):
return links.link_exists(url)
def clone_repo(workdir, repo):
def clone_repo(workdir, repo, ref=None):
"Check out the code."
dest = os.path.join(workdir, repo)
if os.path.exists(dest):
return
cmd = [
'zuul-cloner',
'--workspace', workdir,
]
cache_dir = os.environ.get('ZUUL_CACHE_DIR', '/opt/git')
if cache_dir and os.path.exists(cache_dir):
cmd.extend(['--cache-dir', cache_dir])
cmd.extend([
'git://git.openstack.org',
repo,
])
subprocess.check_call(cmd)
# Force an update, just in case the local version is still out of
# date.
print('Updating newly cloned repository in %s' % dest)
subprocess.check_call(
['git', 'fetch', '-v', '--tags'],
cwd=dest,
)
if not os.path.exists(dest):
cmd = [
'zuul-cloner',
'--workspace', workdir,
]
cache_dir = os.environ.get('ZUUL_CACHE_DIR', '/opt/git')
if cache_dir and os.path.exists(cache_dir):
cmd.extend(['--cache-dir', cache_dir])
cmd.extend([
'git://git.openstack.org',
repo,
])
subprocess.check_call(cmd)
# Force an update, just in case the local version is still out of
# date.
print('Updating newly cloned repository in %s' % dest)
subprocess.check_call(
['git', 'fetch', '-v', '--tags'],
cwd=dest,
)
# If we were given some sort of reference, check that out.
if ref:
print('Updating %s to %s' % (repo, ref))
subprocess.check_call(
['git', 'checkout', ref],
cwd=dest,
)
def sha_for_tag(workdir, repo, version):