1
0
mirror of https://github.com/IEEE-SB-Passau/pelican-deployment-system.git synced 2017-09-06 16:35:38 +02:00

improve repo update, apply more force, submodules suck

This commit is contained in:
2016-06-10 23:34:06 +02:00
parent 3d5d70cfd0
commit 67c9a61f21

View File

@@ -16,6 +16,7 @@ OUTPUT_DIR = "output"
class DeploymentRunner:
def __init__(self, name, runner_config):
self.name = name
self.working_directory = Path(runner_config["working_directory"])
@@ -45,7 +46,7 @@ class DeploymentRunner:
build_repo = Repo(str(self.build_repo_path))
except (InvalidGitRepositoryError, NoSuchPathError) as e:
if not self.build_repo_path.is_dir() or \
if self.build_repo_path.is_dir() and \
next(self.build_repo_path.iterdir(), None) is not None:
log.error("non-empty %s exists but not a valid git repository!",
self.build_repo_path)
@@ -56,13 +57,23 @@ class DeploymentRunner:
str(self.build_repo_path),
branch=self.git_branch)
if build_repo.remotes.origin.url != self.clone_url:
cw = build_repo.remotes.origin.config_writer
cw.set("url", self.clone_url)
cw.release()
build_repo.head.reference = build_repo.create_head(self.git_branch)
assert not build_repo.head.is_detached
# deinit submodules to avoid removed ones dangling around later
# they should stay around in .git, so reinit should be fast
build_repo.git.submodule("deinit", ".")
build_repo.remotes.origin.pull(
force=True,
no_edit=True,
refspec="+{b}:{b}".format(b=self.git_branch))
refspec="+{b}:{b}".format(b=self.git_branch),
recurse_submodules="yes")
# forcefully reset the working tree
build_repo.head.reset(index=True, working_tree=True)
@@ -71,6 +82,9 @@ class DeploymentRunner:
except:
log.warning("git clean failed!", exc_info=True)
# update the submodules
build_repo.git.submodule("update", "--init", "--force", "--recursive")
def build(self, abort_running=False):
with self._build_lock:
if abort_running: