#!/usr/bin/env ruby # This file was placed here by GitLab. It makes sure that your pushed commits # will be processed properly. refs = $stdin.read key_id = ENV.delete('GL_ID') protocol = ENV.delete('GL_PROTOCOL') repo_path = Dir.pwd gl_repository = ENV['GL_REPOSITORY'] def increase_reference_counter(gl_repository, repo_path) result = GitlabNet.new.pre_receive(gl_repository) result && result['reference_counter_increased'] end require_relative '../lib/gitlab_custom_hook' require_relative '../lib/gitlab_access' require_relative '../lib/gitlab_net' # It's important that on pre-receive `increase_reference_counter` gets executed # last so that it only runs if everything else succeeded. On post-receive on the # other hand, we run GitlabPostReceive first because the push is already done # and we don't want to skip it if the custom hook fails. if GitlabAccess.new(gl_repository, repo_path, key_id, refs, protocol).exec && GitlabCustomHook.new(repo_path, key_id).pre_receive(refs) && increase_reference_counter(gl_repository, repo_path) exit 0 else exit 1 end