diff --git a/pelican_deploy/deploy.py b/pelican_deploy/deploy.py index 5f72b25..2c675d6 100644 --- a/pelican_deploy/deploy.py +++ b/pelican_deploy/deploy.py @@ -181,9 +181,11 @@ class DeploymentRunner: def _update_build_repo_submodules(self, repo): log.info("%s build_repo: update submodules", self.name) - results = repo.submodule_sync_update_init_recursive_force() - for r in results: - log_git(r) + # we must update the urls if changed! + result = repo.submodule("sync", "--recursive") + log_git(result) + result = repo.submodule("update", "--init", "--force", "--recursive") + log_git(result) def build(self, abort_running=False, wait=False, ignore_pull_error=False, build_fn=None): diff --git a/pelican_deploy/gittool.py b/pelican_deploy/gittool.py index 2cc77f9..6497db8 100644 --- a/pelican_deploy/gittool.py +++ b/pelican_deploy/gittool.py @@ -15,7 +15,7 @@ import os import errno import shlex -from collections import namedtuple, deque +from collections import namedtuple from subprocess import Popen, PIPE CmdResult = namedtuple("CmdResult", "cmd status stdout stderr") @@ -69,33 +69,6 @@ class Repo: res = self.config("--get", key) return res.stdout.rstrip("\r\n") - def submodule_sync_update_init_recursive_force(self): - results = [] - todo = deque() - todo.extend(self._get_submod_paths()) - while todo: - curr = todo.popleft() - if not os.path.exists(os.path.join(self.repo_dir, curr)): - continue # that happens, strangely... - results.append(self.cmd(self.git_cmd, "-C", curr, - "submodule", "sync")) - results.append(self.cmd(self.git_cmd, "-C", curr, - "submodule", "update", "--init", "--force")) - todo.extend(os.path.join(curr, p) for p in - self._get_submod_paths(curr)) - return results - - def _get_submod_paths(self, submod="."): - if not os.path.exists(os.path.join(self.repo_dir, submod, - ".gitmodules")): - return () - - result = self.cmd(self.git_cmd, "-C", submod, "config", "--file", - ".gitmodules", "--get-regexp", "submodule\..*\.path") - return tuple(p.split(maxsplit=1)[1] for p in result.stdout.splitlines()) - - - def log_git_result(result, out_logger=None, err_logger=None, status_logger=None): if status_logger: err_logger('%s exit status: %s', result.cmd, result.status)