summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Jardón <jjardon@gnome.org>2017-08-17 11:02:23 +0000
committerJavier Jardón <jjardon@gnome.org>2017-08-17 11:02:23 +0000
commit1bd705e21e3e50f837bd37a5bce2de0279bd741e (patch)
treef25a41eac6b643717a855770a43f6ca97bd99782
parentf5e155f66e907b8fed1fa6d26b3a93a989d3626b (diff)
parenta85ca8ba8bc449d5b805a11bf41526316b954680 (diff)
downloadybd-1bd705e21e3e50f837bd37a5bce2de0279bd741e.tar.gz
Merge branch 'benbrown/checkout-sha' into 'master'
Fixes potential for ybd to checkout ref instead of sha See merge request !383
-rw-r--r--ybd/config/ybd.conf3
-rw-r--r--ybd/morphs.py19
-rw-r--r--ybd/repos.py2
3 files changed, 13 insertions, 11 deletions
diff --git a/ybd/config/ybd.conf b/ybd/config/ybd.conf
index a851d69..27e60eb 100644
--- a/ybd/config/ybd.conf
+++ b/ybd/config/ybd.conf
@@ -64,7 +64,8 @@ aliases:
# 8: (after c59d65cf) support added for git-lfs
# 9: (after 035c988e) fixed get_tree() to use sha if it exists, before ref
# 10: (after 2bdd743) Add 'rpm-metadata' in cache-key
-artifact-version: 10
+# 11: (after bd721e8) Fix potentially incorrect checkout of ref instead of sha
+artifact-version: 11
# path to be used in default chroots for builds
base-path: ['/usr/bin', '/bin', '/usr/sbin', '/sbin']
diff --git a/ybd/morphs.py b/ybd/morphs.py
index 203401d..c99b36d 100644
--- a/ybd/morphs.py
+++ b/ybd/morphs.py
@@ -204,14 +204,6 @@ class Morphs(object):
if key is not 'name':
dn[key] = new_def[key]
- # If a sha was specified, we want to build it instead of the ref
- # but preserve the ref in the output <target>.yml file.
- if dn.get('sha'):
- if len(dn['sha']) != 40:
- log(new_def, 'ERROR: invalid sha:', dn['sha'], exit=True)
- dn['orig_ref'] = dn['ref']
- dn['ref'] = dn['sha']
-
if dn['name'] != new_def['name']:
log(new_def, 'WARNING: %s also named as' % new_def['name'],
dn['name'], exit=exit)
@@ -222,7 +214,16 @@ class Morphs(object):
log(new_def,
'WARNING: multiple definitions of %s \n' % key,
'%s | %s' % (dn.get(key), new_def[key]), exit=exit)
- else:
+
+ # If a sha was specified, we want to build it instead of the ref
+ # but preserve the ref in the output <target>.yml file.
+ if new_def.get('sha'):
+ if len(new_def['sha']) != 40:
+ log(new_def, 'ERROR: invalid sha:', new_def['sha'], exit=True)
+ new_def['orig_ref'] = new_def['ref']
+ new_def['ref'] = new_def['sha']
+
+ if dn is None:
self._data[new_def['path']] = new_def
return new_def['path']
diff --git a/ybd/repos.py b/ybd/repos.py
index 0a24b6b..f3b1872 100644
--- a/ybd/repos.py
+++ b/ybd/repos.py
@@ -197,7 +197,7 @@ def update_mirror(name, repo, gitdir):
def checkout(dn):
- _checkout(dn['name'], dn['repo'], dn['ref'], dn['checkout'])
+ _checkout(dn['name'], dn['repo'], dn.get('sha', dn['ref']), dn['checkout'])
with app.chdir(dn['checkout']):
if os.path.exists('.gitmodules') or dn.get('submodules'):