aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/lib/devtool/sdk.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/devtool/sdk.py')
-rw-r--r--scripts/lib/devtool/sdk.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/scripts/lib/devtool/sdk.py b/scripts/lib/devtool/sdk.py
index b1905f9863a..a22841d7891 100644
--- a/scripts/lib/devtool/sdk.py
+++ b/scripts/lib/devtool/sdk.py
@@ -186,9 +186,15 @@ def sdk_update(args, config, basepath, workspace):
return 0
# Update metadata
logger.debug("Updating metadata via git ...")
- # Try using 'git pull', if failed, use 'git clone'
+ #Check for the status before doing a fetch and reset
if os.path.exists(os.path.join(basepath, 'layers/.git')):
- ret = subprocess.call("git pull %s/layers/.git" % updateserver, shell=True, cwd=layers_dir)
+ out = subprocess.check_output("git status --porcelain", shell=True, cwd=layers_dir)
+ if not out:
+ ret = subprocess.call("git fetch --all; git reset --hard", shell=True, cwd=layers_dir)
+ else:
+ logger.error("Failed to update metadata as there have been changes made to it. Aborting.");
+ logger.error("Changed files:\n%s" % out);
+ return -1
else:
ret = -1
if ret != 0: