Allow tree-ish to be used for galaxy role version
Ensure that ansible-galaxy version can be a branch, a tag, or any tree-ish supported by git including specific commit IDs. For git scm roles, adds an explicit git checkout of the specified role_version prior to the git archive. This means that we'll always archive from HEAD of whatever role_version is checked out. role_version can be a branch, a tag, or any <tree-ish> supported by git including specific commit IDs. These changes also ensure ansible-galaxy works for scm clones when specified version differs from repository default branch.
This commit is contained in:
parent
9b9fb51d9d
commit
9761250a4b
2 changed files with 11 additions and 2 deletions
|
@ -310,5 +310,3 @@ class GalaxyRole(object):
|
|||
}
|
||||
"""
|
||||
return dict(scm=self.scm, src=self.src, version=self.version, name=self.name)
|
||||
|
||||
|
||||
|
|
|
@ -190,6 +190,17 @@ class RoleRequirement(RoleDefinition):
|
|||
if rc != 0:
|
||||
raise AnsibleError ("- command %s failed in directory %s (rc=%s)" % (' '.join(clone_cmd), tempdir, rc))
|
||||
|
||||
if scm == 'git' and version:
|
||||
checkout_cmd = [scm, 'checkout', version]
|
||||
with open('/dev/null', 'w') as devnull:
|
||||
try:
|
||||
popen = subprocess.Popen(checkout_cmd, cwd=os.path.join(tempdir, name), stdout=devnull, stderr=devnull)
|
||||
except (IOError, OSError):
|
||||
raise AnsibleError("error executing: %s" % " ".join(checkout_cmd))
|
||||
rc = popen.wait()
|
||||
if rc != 0:
|
||||
raise AnsibleError("- command %s failed in directory %s (rc=%s)" % (' '.join(checkout_cmd), tempdir, rc))
|
||||
|
||||
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.tar')
|
||||
if scm == 'hg':
|
||||
archive_cmd = ['hg', 'archive', '--prefix', "%s/" % name]
|
||||
|
|
Loading…
Reference in a new issue