summaryrefslogtreecommitdiffstats
path: root/scripts/combo-layer
diff options
context:
space:
mode:
authorPatrick Ohly <patrick.ohly@intel.com>2015-08-04 18:24:00 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-08-09 00:13:57 -0700
commit8b847ffd040fc35d246079eb0b8d51331dc721b5 (patch)
treec7764ac096d2ca71d7a9519332c95c781d193d3d /scripts/combo-layer
parentb2a0c2fbd1e4a0808c9594eb283395f5608ba4e9 (diff)
downloadpoky-8b847ffd040fc35d246079eb0b8d51331dc721b5.tar.gz
combo-layer: fix action_pull for unknown branch
When reconfiguring the branch to something not already fetched, action_pull fails with error: pathspec '<new branch name>' did not match any file(s) known to git. It is the "git checkout" which fails like that. To solve this, try the faster "git checkout + git pull" first and only if that fails, fall back to the slow "git fetch + git checkout". In the conf.hard_reset case, do the checkout always after the git fetch. (From OE-Core rev: ad4d3b1da190cf08c6ac5f9a94a2a1c4980a184d) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/combo-layer')
-rwxr-xr-xscripts/combo-layer18
1 files changed, 15 insertions, 3 deletions
diff --git a/scripts/combo-layer b/scripts/combo-layer
index 7380f5b959..7435a176be 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -586,13 +586,25 @@ def action_pull(conf, args):
586 ldir = repo['local_repo_dir'] 586 ldir = repo['local_repo_dir']
587 branch = repo.get('branch', "master") 587 branch = repo.get('branch', "master")
588 logger.info("update branch %s of component repo %s in %s ..." % (branch, name, ldir)) 588 logger.info("update branch %s of component repo %s in %s ..." % (branch, name, ldir))
589 runcmd("git checkout %s" % branch, ldir)
590 if not conf.hard_reset: 589 if not conf.hard_reset:
591 output=runcmd("git pull --ff-only", ldir) 590 # Try to pull only the configured branch. Beware that this may fail
592 logger.info(output) 591 # when the branch is currently unknown (for example, after reconfiguring
592 # combo-layer). In that case we need to fetch everything and try the check out
593 # and pull again.
594 try:
595 runcmd("git checkout %s" % branch, ldir, printerr=False)
596 except subprocess.CalledProcessError:
597 output=runcmd("git fetch", ldir)
598 logger.info(output)
599 runcmd("git checkout %s" % branch, ldir)
600 runcmd("git pull --ff-only", ldir)
601 else:
602 output=runcmd("git pull --ff-only", ldir)
603 logger.info(output)
593 else: 604 else:
594 output=runcmd("git fetch", ldir) 605 output=runcmd("git fetch", ldir)
595 logger.info(output) 606 logger.info(output)
607 runcmd("git checkout %s" % branch, ldir)
596 runcmd("git reset --hard FETCH_HEAD", ldir) 608 runcmd("git reset --hard FETCH_HEAD", ldir)
597 609
598def action_update(conf, args): 610def action_update(conf, args):