Commit e8f39a0a61c4c91b8a5dc016474b6139a79a52e8
1 parent
048117c0
Exists in
master
and in
4 other branches
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 |