diff options
Diffstat (limited to 'app/services/projects/update_remote_mirror_service.rb')
-rw-r--r-- | app/services/projects/update_remote_mirror_service.rb | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/app/services/projects/update_remote_mirror_service.rb b/app/services/projects/update_remote_mirror_service.rb index 13a467a3ef9..e554bed6819 100644 --- a/app/services/projects/update_remote_mirror_service.rb +++ b/app/services/projects/update_remote_mirror_service.rb @@ -29,14 +29,16 @@ module Projects remote_mirror.ensure_remote! repository.fetch_remote(remote_mirror.remote_name, ssh_auth: remote_mirror, no_tags: true) - opts = {} - if remote_mirror.only_protected_branches? - opts[:only_branches_matching] = project.protected_branches.select(:name).map(&:name) - end + response = remote_mirror.update_repository - remote_mirror.update_repository(opts) + if response.divergent_refs.any? + message = "Some refs have diverged and have not been updated on the remote:" + message += "\n\n#{response.divergent_refs.join("\n")}" - remote_mirror.update_finish! + remote_mirror.mark_as_failed!(message) + else + remote_mirror.update_finish! + end end def retry_or_fail(mirror, message, tries) |