Commit ed931f3a49613793d818a820f63f11356698b222
Exists in
master
and in
4 other branches
Merge pull request #1958 from japgolly/git_commit_fix
Ensure git can commit and prevent it from failing silently
Showing
3 changed files
with
30 additions
and
4 deletions
Show diff stats
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 |