From 4657bc9d165e51981e034e73e7b92552e873eef7 Mon Sep 17 00:00:00 2001 From: Stephano Cetola Date: Fri, 15 Apr 2016 09:40:29 -0700 Subject: devtool: sdk-update: reset git metadata on update Replace git pull with fetch and reset to avoid the merge logic in the event that the layers repo in the published SDK we're updating to isn't fast-forward merge from the local repo. Also add gitignore and committer info during publish to avoid errors and to be sure that the first commit has a dummy user in it. [ YOCTO #9368 ] Signed-off-by: Stephano Cetola Signed-off-by: Ross Burton --- scripts/lib/devtool/sdk.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'scripts/lib/devtool') 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: -- cgit v1.2.3