Commit 569a88a456a5f01fbef6f5280b6982c3db8e2a72
1 parent
5c3fdfaa
Exists in
master
and in
4 other branches
raise exception if gitolite is broken
Showing
2 changed files
with
15 additions
and
2 deletions
Show diff stats
app/views/errors/gitolite.html.haml
lib/gitlab/backend/gitolite_config.rb
| ... | ... | @@ -6,6 +6,7 @@ module Gitlab |
| 6 | 6 | class GitoliteConfig |
| 7 | 7 | class PullError < StandardError; end |
| 8 | 8 | class PushError < StandardError; end |
| 9 | + class BrokenGitolite < StandardError; end | |
| 9 | 10 | |
| 10 | 11 | attr_reader :config_tmp_dir, :ga_repo, :conf |
| 11 | 12 | |
| ... | ... | @@ -72,6 +73,10 @@ module Gitlab |
| 72 | 73 | log("Push error -> " + " " + ex.message) |
| 73 | 74 | raise Gitolite::AccessDenied, ex.message |
| 74 | 75 | |
| 76 | + rescue BrokenGitolite => ex | |
| 77 | + log("Gitolite error -> " + " " + ex.message) | |
| 78 | + raise Gitolite::AccessDenied, ex.message | |
| 79 | + | |
| 75 | 80 | rescue Exception => ex |
| 76 | 81 | log(ex.class.name + " " + ex.message) |
| 77 | 82 | raise Gitolite::AccessDenied.new("gitolite timeout") |
| ... | ... | @@ -202,7 +207,15 @@ module Gitlab |
| 202 | 207 | system('git commit -m "GitLab"') # git commit returns 0 on success, and 1 if there is nothing to commit |
| 203 | 208 | raise "Git commit failed." unless [0,1].include? $?.exitstatus |
| 204 | 209 | |
| 205 | - if system('git push') | |
| 210 | + stdin, stdout, stderr = Open3.popen3('git push') | |
| 211 | + push_output = stderr.read | |
| 212 | + push_status = $?.to_i | |
| 213 | + | |
| 214 | + if push_output =~ /remote\: FATAL/ | |
| 215 | + raise BrokenGitolite, push_output | |
| 216 | + end | |
| 217 | + | |
| 218 | + if push_status.zero? | |
| 206 | 219 | Dir.chdir(Rails.root) |
| 207 | 220 | else |
| 208 | 221 | raise PushError, "unable to push gitolite-admin repo" | ... | ... |