Listing GH Webhooks doesn't stop import process for non GH admin users

This commit is contained in:
Douglas Barbosa Alexandre 2016-06-16 19:40:42 -03:00
parent 71ecd8c6ed
commit 7a34c7997b
1 changed files with 18 additions and 5 deletions

View File

@ -66,8 +66,7 @@ module Gitlab
end
def import_pull_requests
hooks = client.hooks(repo).map { |raw| HookFormatter.new(raw) }.select(&:valid?)
disable_webhooks(hooks)
disable_webhooks
pull_requests = client.pull_requests(repo, state: :all, sort: :created, direction: :asc, per_page: 100)
pull_requests = pull_requests.map { |raw| PullRequestFormatter.new(project, raw) }.select(&:valid?)
@ -90,14 +89,14 @@ module Gitlab
raise Projects::ImportService::Error, e.message
ensure
clean_up_restored_branches(branches_removed)
clean_up_disabled_webhooks(hooks)
clean_up_disabled_webhooks
end
def disable_webhooks(hooks)
def disable_webhooks
update_webhooks(hooks, active: false)
end
def clean_up_disabled_webhooks(hooks)
def clean_up_disabled_webhooks
update_webhooks(hooks, active: true)
end
@ -107,6 +106,20 @@ module Gitlab
end
end
def hooks
@hooks ||=
begin
client.hooks(repo).map { |raw| HookFormatter.new(raw) }.select(&:valid?)
# The GitHub Repository Webhooks API returns 404 for users
# without admin access to the repository when listing hooks.
# In this case we just want to return gracefully instead of
# spitting out an error and stop the import process.
rescue Octokit::NotFound
[]
end
end
def restore_branches(branches)
branches.each do |name, sha|
client.create_ref(repo, "refs/heads/#{name}", sha)