diff options
author | Robert Yang <liezhi.yang@windriver.com> | 2018-07-06 12:31:06 +0800 |
---|---|---|
committer | Robert Yang <liezhi.yang@windriver.com> | 2018-07-09 12:06:31 +0800 |
commit | 1bcda59f1ee72f8762a634c11808f226975c8c97 (patch) | |
tree | 158cc8237c509220e4744c2f186195e9ff902e19 /layerindex | |
parent | a02cf1b6d04658216eadffc817a651dc47fcfbfb (diff) | |
download | openembedded-core-contrib-1bcda59f1ee72f8762a634c11808f226975c8c97.tar.gz |
utils.py: fix checkout_repo when no HEAD
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.yang@windriver.com>
Diffstat (limited to 'layerindex')
-rw-r--r-- | layerindex/utils.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/layerindex/utils.py b/layerindex/utils.py index c30038da26..3dc54a18fd 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 |