summaryrefslogtreecommitdiff
path: root/lib/gitlab_update.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab_update.rb')
-rw-r--r--lib/gitlab_update.rb58
1 files changed, 0 insertions, 58 deletions
diff --git a/lib/gitlab_update.rb b/lib/gitlab_update.rb
deleted file mode 100644
index cd7a1e5..0000000
--- a/lib/gitlab_update.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-require_relative 'gitlab_init'
-require_relative 'gitlab_net'
-require_relative 'names_helper'
-require 'json'
-
-class GitlabUpdate
- include NamesHelper
-
- attr_reader :config, :repo_path, :repo_name,
- :ref, :ref_name, :oldrev, :newrev
-
- def initialize(repo_path, actor, ref)
- @config = GitlabConfig.new
- @repo_path, @actor, @ref = repo_path.strip, actor, ref
- @repo_name = extract_repo_name(@repo_path.dup, config.repos_path.to_s)
- @ref_name = extract_ref_name(ref)
- @oldrev = ARGV[1]
- @newrev = ARGV[2]
- end
-
- def forced_push?
- if @oldrev !~ /00000000/ && @newrev !~ /00000000/
- missed_refs = IO.popen(%W(git rev-list #{@oldrev} ^#{@newrev})).read
- missed_refs.split("\n").size > 0
- else
- false
- end
- end
-
- def exec
- # reset GL_ID env since we already
- # get value from it
- ENV['GL_ID'] = nil
-
- if api.allowed?('git-receive-pack', @repo_name, @actor, @ref_name, @oldrev, @newrev, forced_push?)
- update_redis
- exit 0
- else
- puts "GitLab: You are not allowed to access #{@ref_name}!"
- exit 1
- end
- end
-
- protected
-
- def api
- GitlabNet.new
- end
-
- def update_redis
- queue = "#{config.redis_namespace}:queue:post_receive"
- msg = JSON.dump({'class' => 'PostReceive', 'args' => [@repo_path, @oldrev, @newrev, @ref, @actor]})
- unless system(*config.redis_command, 'rpush', queue, msg, err: '/dev/null', out: '/dev/null')
- puts "GitLab: An unexpected error occurred (redis-cli returned #{$?.exitstatus})."
- exit 1
- end
- end
-end