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>
This commit is contained in:
parent
b2a0c2fbd1
commit
8b847ffd04
|
@ -586,13 +586,25 @@ def action_pull(conf, args):
|
|||
ldir = repo['local_repo_dir']
|
||||
branch = repo.get('branch', "master")
|
||||
logger.info("update branch %s of component repo %s in %s ..." % (branch, name, ldir))
|
||||
runcmd("git checkout %s" % branch, ldir)
|
||||
if not conf.hard_reset:
|
||||
output=runcmd("git pull --ff-only", ldir)
|
||||
logger.info(output)
|
||||
# Try to pull only the configured branch. Beware that this may fail
|
||||
# when the branch is currently unknown (for example, after reconfiguring
|
||||
# combo-layer). In that case we need to fetch everything and try the check out
|
||||
# and pull again.
|
||||
try:
|
||||
runcmd("git checkout %s" % branch, ldir, printerr=False)
|
||||
except subprocess.CalledProcessError:
|
||||
output=runcmd("git fetch", ldir)
|
||||
logger.info(output)
|
||||
runcmd("git checkout %s" % branch, ldir)
|
||||
runcmd("git pull --ff-only", ldir)
|
||||
else:
|
||||
output=runcmd("git pull --ff-only", ldir)
|
||||
logger.info(output)
|
||||
else:
|
||||
output=runcmd("git fetch", ldir)
|
||||
logger.info(output)
|
||||
runcmd("git checkout %s" % branch, ldir)
|
||||
runcmd("git reset --hard FETCH_HEAD", ldir)
|
||||
|
||||
def action_update(conf, args):
|
||||
|
|
Loading…
Reference in New Issue