From: Hans-Christoph Steiner Date: Wed, 19 Jul 2017 11:02:06 +0000 (+0200) Subject: server: report errors pushing to git mirrors X-Git-Tag: 0.8~9^2~9 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=1f7f9d403c193098df33467677e2fd6c48a0439f;p=fdroidserver.git server: report errors pushing to git mirrors This makes `fdroid server update` fail if pushing to one of the git mirrors fails. This is what happens if the other methods fail, e.g. rsync or S3. closes #347 --- diff --git a/fdroidserver/index.py b/fdroidserver/index.py index 86b4bb08..b0de4325 100644 --- a/fdroidserver/index.py +++ b/fdroidserver/index.py @@ -567,7 +567,6 @@ def get_mirror_service_urls(url): return urls - def download_repo_index(url_str, etag=None, verify_fingerprint=True): """ Downloads the repository index from the given :param url_str diff --git a/fdroidserver/server.py b/fdroidserver/server.py index a4ae3c85..3b36ecee 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -386,7 +386,6 @@ def update_servergitmirrors(servergitmirrors, repo_section): # push for every remote. This will overwrite the git history for remote in repo.remotes: - branch = 'master' if remote.name == 'gitlab': logging.debug('Writing .gitlab-ci.yml to deploy to GitLab Pages') with open(os.path.join(git_mirror_path, ".gitlab-ci.yml"), "wt") as out_file: @@ -405,13 +404,16 @@ def update_servergitmirrors(servergitmirrors, repo_section): logging.debug('Pushing to ' + remote.url) with repo.git.custom_environment(GIT_SSH_COMMAND=ssh_cmd): - remote.push(branch, force=True, set_upstream=True, progress=progress) - - # Reset the gitlab specific stuff before the next remote. - if remote.name == 'gitlab': - logging.debug('Removing .gitlab-ci.yml now that it has successfully deployed') - repo.index.reset('HEAD^') - repo.index.checkout(force=True) + pushinfos = remote.push('master', force=True, set_upstream=True, progress=progress) + for pushinfo in pushinfos: + if pushinfo.flags & (git.remote.PushInfo.ERROR + | git.remote.PushInfo.REJECTED + | git.remote.PushInfo.REMOTE_FAILURE + | git.remote.PushInfo.REMOTE_REJECTED): + raise FDroidException(remote.url + ' push failed: ' + str(pushinfo.flags) + + ' ' + pushinfo.summary) + else: + logging.debug(remote.url + ': ' + pushinfo.summary) if progress: bar.done()