diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-01-19 11:58:36 +0200 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-01-19 11:58:36 +0200 |
commit | 569a88a456a5f01fbef6f5280b6982c3db8e2a72 (patch) | |
tree | 14a8f480a19ca1f194668fdc6ba48716c70d77e2 | |
parent | 5c3fdfaacba50edbd6d6d7db65d2aa2e69bb5cad (diff) | |
download | gitlab-ce-569a88a456a5f01fbef6f5280b6982c3db8e2a72.tar.gz |
raise exception if gitolite is broken
-rw-r--r-- | app/views/errors/gitolite.html.haml | 2 | ||||
-rw-r--r-- | lib/gitlab/backend/gitolite_config.rb | 15 |
2 files changed, 15 insertions, 2 deletions
diff --git a/app/views/errors/gitolite.html.haml b/app/views/errors/gitolite.html.haml index 590bca71dd4..33ea8c1a8b7 100644 --- a/app/views/errors/gitolite.html.haml +++ b/app/views/errors/gitolite.html.haml @@ -15,7 +15,7 @@ %p Diagnostic tool: %pre - bundle exec rake gitlab:app:status RAILS_ENV=production + bundle exec rake gitlab:check RAILS_ENV=production %li %p Permissions: diff --git a/lib/gitlab/backend/gitolite_config.rb b/lib/gitlab/backend/gitolite_config.rb index 10e527eac73..720ef8d236b 100644 --- a/lib/gitlab/backend/gitolite_config.rb +++ b/lib/gitlab/backend/gitolite_config.rb @@ -6,6 +6,7 @@ module Gitlab class GitoliteConfig class PullError < StandardError; end class PushError < StandardError; end + class BrokenGitolite < StandardError; end attr_reader :config_tmp_dir, :ga_repo, :conf @@ -72,6 +73,10 @@ module Gitlab log("Push error -> " + " " + ex.message) raise Gitolite::AccessDenied, ex.message + rescue BrokenGitolite => ex + log("Gitolite error -> " + " " + ex.message) + raise Gitolite::AccessDenied, ex.message + rescue Exception => ex log(ex.class.name + " " + ex.message) raise Gitolite::AccessDenied.new("gitolite timeout") @@ -202,7 +207,15 @@ module Gitlab system('git commit -m "GitLab"') # git commit returns 0 on success, and 1 if there is nothing to commit raise "Git commit failed." unless [0,1].include? $?.exitstatus - if system('git push') + stdin, stdout, stderr = Open3.popen3('git push') + push_output = stderr.read + push_status = $?.to_i + + if push_output =~ /remote\: FATAL/ + raise BrokenGitolite, push_output + end + + if push_status.zero? Dir.chdir(Rails.root) else raise PushError, "unable to push gitolite-admin repo" |