Commit e8f39a0a61c4c91b8a5dc016474b6139a79a52e8

Authored by randx
1 parent 048117c0

gitolite -> more exceptions

Showing 1 changed file with 22 additions and 4 deletions   Show diff stats
lib/gitlab/backend/gitolite_config.rb
@@ -4,6 +4,9 @@ require 'fileutils' @@ -4,6 +4,9 @@ require 'fileutils'
4 4
5 module Gitlab 5 module Gitlab
6 class GitoliteConfig 6 class GitoliteConfig
  7 + class PullError < StandardError; end
  8 + class PushError < StandardError; end
  9 +
7 attr_reader :config_tmp_dir, :ga_repo, :conf 10 attr_reader :config_tmp_dir, :ga_repo, :conf
8 11
9 def config_tmp_dir 12 def config_tmp_dir
@@ -54,6 +57,14 @@ module Gitlab @@ -54,6 +57,14 @@ module Gitlab
54 end 57 end
55 end 58 end
56 end 59 end
  60 + rescue PullError => ex
  61 + Gitlab::Logger.error("Pull error -> " + ex.message)
  62 + raise Gitolite::AccessDenied, ex.message
  63 +
  64 + rescue PushError => ex
  65 + Gitlab::Logger.error("Push error -> " + " " + ex.message)
  66 + raise Gitolite::AccessDenied, ex.message
  67 +
57 rescue Exception => ex 68 rescue Exception => ex
58 Gitlab::Logger.error(ex.class.name + " " + ex.message) 69 Gitlab::Logger.error(ex.class.name + " " + ex.message)
59 raise Gitolite::AccessDenied.new("gitolite timeout") 70 raise Gitolite::AccessDenied.new("gitolite timeout")
@@ -171,14 +182,21 @@ module Gitlab @@ -171,14 +182,21 @@ module Gitlab
171 def pull tmp_dir 182 def pull tmp_dir
172 Dir.mkdir tmp_dir 183 Dir.mkdir tmp_dir
173 `git clone #{Gitlab.config.gitolite_admin_uri} #{tmp_dir}/gitolite` 184 `git clone #{Gitlab.config.gitolite_admin_uri} #{tmp_dir}/gitolite`
  185 +
  186 + unless File.exists?(File.join(tmp_dir, 'gitolite', 'conf', 'gitolite.conf'))
  187 + raise PullError, "unable to clone gitolite-admin repo"
  188 + end
174 end 189 end
175 190
176 def push tmp_dir 191 def push tmp_dir
177 Dir.chdir(File.join(tmp_dir, "gitolite")) 192 Dir.chdir(File.join(tmp_dir, "gitolite"))
178 - `git add -A`  
179 - `git commit -am "GitLab"`  
180 - `git push`  
181 - Dir.chdir(Rails.root) 193 + system('git add -A')
  194 + system('git commit -am "GitLab"')
  195 + if system('git push')
  196 + Dir.chdir(Rails.root)
  197 + else
  198 + raise PushError, "unable to push gitolite-admin repo"
  199 + end
182 end 200 end
183 end 201 end
184 end 202 end