Fixed: $ git clone <url> warning: remote HEAD refers to nonexistent ref, unable to checkout. $ git rev-parse HEAD HEAD fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'
Catch the error and avoid that. And use "git reset --hard" to replace of "git reset --hard HEAD", HEAD is default for git reset, so they are the same, but the later one reports error when remote HEAD doesn't exist: $ git reset --hard HEAD fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree. [snip] $ git reset --hard No errors. Signed-off-by: Robert Yang <liezhi.y...@windriver.com> --- layerindex/utils.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/layerindex/utils.py b/layerindex/utils.py index c30038d..3dc54a1 100644 --- a/layerindex/utils.py +++ b/layerindex/utils.py @@ -217,17 +217,25 @@ def checkout_repo(repodir, commit, logger, force=False): if force: currentref = '' else: - currentref = runcmd("git rev-parse HEAD", repodir, logger=logger).strip() + try: + # The "git rev-parse HEAD" returns "fatal: ambiguous argument 'HEAD'" + # when a repo is unable to check out after git clone: + # git clone <url> + # warning: remote HEAD refers to nonexistent ref, unable to checkout. + # So check and avoid that + currentref = runcmd("git rev-parse HEAD", repodir, logger=logger).strip() + except Exception as esc: + logger.warn(esc) + currentref = '' if currentref != commit: # Reset in case there are added but uncommitted changes - runcmd("git reset --hard HEAD", repodir, logger=logger) + runcmd("git reset --hard", repodir, logger=logger) # Drop any untracked files in case these cause problems (either because # they will exist in the revision we're checking out, or will otherwise # interfere with operation, e.g. stale pyc files) runcmd("git clean -qdfx", repodir, logger=logger) # Now check out the revision - runcmd("git checkout %s" % commit, - repodir, logger=logger) + runcmd("git checkout %s" % commit, repodir, logger=logger) def checkout_layer_branch(layerbranch, repodir, logger=None): branchname = layerbranch.branch.name -- 2.7.4 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto