diff options
author | Javier Jardón <jjardon@gnome.org> | 2017-08-17 11:02:23 +0000 |
---|---|---|
committer | Javier Jardón <jjardon@gnome.org> | 2017-08-17 11:02:23 +0000 |
commit | 1bd705e21e3e50f837bd37a5bce2de0279bd741e (patch) | |
tree | f25a41eac6b643717a855770a43f6ca97bd99782 | |
parent | f5e155f66e907b8fed1fa6d26b3a93a989d3626b (diff) | |
parent | a85ca8ba8bc449d5b805a11bf41526316b954680 (diff) | |
download | ybd-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.conf | 3 | ||||
-rw-r--r-- | ybd/morphs.py | 19 | ||||
-rw-r--r-- | ybd/repos.py | 2 |
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'): |