Commit ed931f3a49613793d818a820f63f11356698b222

Authored by Dmitriy Zaporozhets
2 parents ea6359df 93f0a8c9

Merge pull request #1958 from japgolly/git_commit_fix

Ensure git can commit and prevent it from failing silently
doc/install/installation.md
@@ -180,6 +180,14 @@ and ensure you have followed all of the above steps carefully. @@ -180,6 +180,14 @@ and ensure you have followed all of the above steps carefully.
180 sudo gem install bundler 180 sudo gem install bundler
181 sudo -u gitlab -H bundle install --without development test sqlite postgres --deployment 181 sudo -u gitlab -H bundle install --without development test sqlite postgres --deployment
182 182
  183 +#### Configure git client
  184 +
  185 +Gitlab needs to be able to commit and push changes to gitolite.
  186 +Git requires a username and email in order to be able to do that.
  187 +
  188 + sudo -u gitlab -H git config --global user.email "gitlab@localhost"
  189 + sudo -u gitlab -H git config --global user.name "Gitlab"
  190 +
183 #### Setup application 191 #### Setup application
184 192
185 sudo -u gitlab bundle exec rake gitlab:app:setup RAILS_ENV=production 193 sudo -u gitlab bundle exec rake gitlab:app:setup RAILS_ENV=production
lib/gitlab/backend/gitolite_config.rb
@@ -194,8 +194,10 @@ module Gitlab @@ -194,8 +194,10 @@ module Gitlab
194 194
195 def push tmp_dir 195 def push tmp_dir
196 Dir.chdir(File.join(tmp_dir, "gitolite")) 196 Dir.chdir(File.join(tmp_dir, "gitolite"))
197 - system('git add -A')  
198 - system('git commit -am "GitLab"') 197 + raise "Git add failed." unless system('git add -A')
  198 + system('git commit -m "GitLab"') # git commit returns 0 on success, and 1 if there is nothing to commit
  199 + raise "Git commit failed." unless [0,1].include? $?.exitstatus
  200 +
199 if system('git push') 201 if system('git push')
200 Dir.chdir(Rails.root) 202 Dir.chdir(Rails.root)
201 else 203 else
lib/tasks/gitlab/status.rake
@@ -37,9 +37,10 @@ namespace :gitlab do @@ -37,9 +37,10 @@ namespace :gitlab do
37 return 37 return
38 end 38 end
39 39
  40 + FileUtils.rm_rf("/tmp/gitolite_gitlab_test")
40 begin 41 begin
41 - `git clone #{Gitlab.config.gitolite_admin_uri} /tmp/gitolite_gitlab_test`  
42 - FileUtils.rm_rf("/tmp/gitolite_gitlab_test") 42 + `git clone -q #{Gitlab.config.gitolite_admin_uri} /tmp/gitolite_gitlab_test`
  43 + raise unless $?.success?
43 print "Can clone gitolite-admin?............" 44 print "Can clone gitolite-admin?............"
44 puts "YES".green 45 puts "YES".green
45 rescue 46 rescue
@@ -48,6 +49,21 @@ namespace :gitlab do @@ -48,6 +49,21 @@ namespace :gitlab do
48 return 49 return
49 end 50 end
50 51
  52 + begin
  53 + Dir.chdir("/tmp/gitolite_gitlab_test") do
  54 + `touch blah && git add blah && git commit -qm blah -- blah`
  55 + raise unless $?.success?
  56 + end
  57 + print "Can git commit?............"
  58 + puts "YES".green
  59 + rescue
  60 + print "Can git commit?............"
  61 + puts "NO".red
  62 + return
  63 + ensure
  64 + FileUtils.rm_rf("/tmp/gitolite_gitlab_test")
  65 + end
  66 +
51 print "UMASK for .gitolite.rc is 0007? ............" 67 print "UMASK for .gitolite.rc is 0007? ............"
52 if open(File.absolute_path("#{git_base_path}/../.gitolite.rc")).grep(/UMASK([ \t]*)=([ \t>]*)0007/).any? 68 if open(File.absolute_path("#{git_base_path}/../.gitolite.rc")).grep(/UMASK([ \t]*)=([ \t>]*)0007/).any?
53 puts "YES".green 69 puts "YES".green