summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2018-07-06 12:31:06 +0800
committerRobert Yang <liezhi.yang@windriver.com>2018-07-09 12:06:31 +0800
commit1bcda59f1ee72f8762a634c11808f226975c8c97 (patch)
tree158cc8237c509220e4744c2f186195e9ff902e19
parenta02cf1b6d04658216eadffc817a651dc47fcfbfb (diff)
downloadopenembedded-core-contrib-1bcda59f1ee72f8762a634c11808f226975c8c97.tar.gz
openembedded-core-contrib-1bcda59f1ee72f8762a634c11808f226975c8c97.tar.bz2
openembedded-core-contrib-1bcda59f1ee72f8762a634c11808f226975c8c97.zip
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>
-rw-r--r--layerindex/utils.py16
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