diff --git a/lib/tasks/gitlab_status.rake b/lib/tasks/gitlab_status.rake new file mode 100644 index 00000000..db4d1d36 --- /dev/null +++ b/lib/tasks/gitlab_status.rake @@ -0,0 +1,58 @@ +desc "Check gitlab installation status" +task :gitlab_status => :environment do + puts "Starting diagnostic" + + print "config/database.yml............" + if File.exists?(File.join Rails.root, "config", "database.yml") + puts "exists".green + else + puts "missing".red + return + end + + print "config/gitlab.yml............" + if File.exists?(File.join Rails.root, "config", "gitlab.yml") + puts "exists".green + else + puts "missing".red + return + end + + GIT_HOST = YAML.load_file("#{Rails.root}/config/gitlab.yml")["git_host"] + print "/home/git/repositories/............" + if File.exists?(GIT_HOST['base_path']) + puts "exists".green + else + puts "missing".red + return + end + + print "/home/git/repositories/ is writable?............" + if File.stat(GIT_HOST['base_path']).writable? + puts "YES".green + else + puts "NO".red + return + end + + begin + `git clone #{GIT_HOST["admin_uri"]} /tmp/gitolite_gitlab_test` + FileUtils.rm_rf("/tmp/gitolite_gitlab_test") + print "Can clone gitolite-admin?............" + puts "YES".green + rescue + print "Can clone gitolite-admin?............" + puts "NO".red + return + end + + print "UMASK for .gitolite.rc is 0007? ............" + unless open("#{GIT_HOST['base_path']}/../.gitolite.rc").grep(/REPO_UMASK = 0007/).empty? + puts "YES".green + else + puts "NO".red + return + end + + puts "\nFinished" +end