diff options
Diffstat (limited to 'scripts/lib/devtool/sdk.py')
-rw-r--r-- | scripts/lib/devtool/sdk.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/scripts/lib/devtool/sdk.py b/scripts/lib/devtool/sdk.py index b1905f9863..a22841d789 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: |