Commit 54a24608a29d113f0c607027cddd8b6947c6a55c
1 parent
cfe89832
Exists in
master
and in
4 other branches
Remove chdir inside runtime. Improved gitolite shell commands
Showing
3 changed files
with
39 additions
and
14 deletions
Show diff stats
Gemfile
Gemfile.lock
... | ... | @@ -144,6 +144,7 @@ GEM |
144 | 144 | colorize (0.5.8) |
145 | 145 | connection_pool (1.0.0) |
146 | 146 | crack (0.3.1) |
147 | + daemons (1.1.9) | |
147 | 148 | devise (2.1.2) |
148 | 149 | bcrypt-ruby (~> 3.0) |
149 | 150 | orm_adapter (~> 0.1) |
... | ... | @@ -436,6 +437,10 @@ GEM |
436 | 437 | test_after_commit (0.0.1) |
437 | 438 | therubyracer (0.10.2) |
438 | 439 | libv8 (~> 3.3.10) |
440 | + thin (1.5.0) | |
441 | + daemons (>= 1.0.9) | |
442 | + eventmachine (>= 0.12.6) | |
443 | + rack (>= 1.0.0) | |
439 | 444 | thor (0.16.0) |
440 | 445 | tilt (1.3.3) |
441 | 446 | timers (1.0.2) |
... | ... | @@ -542,6 +547,7 @@ DEPENDENCIES |
542 | 547 | stamp |
543 | 548 | test_after_commit |
544 | 549 | therubyracer |
550 | + thin | |
545 | 551 | uglifier (~> 1.3.0) |
546 | 552 | unicorn (~> 4.4.0) |
547 | 553 | webmock | ... | ... |
lib/gitlab/backend/gitolite_config.rb
... | ... | @@ -77,9 +77,9 @@ module Gitlab |
77 | 77 | log("Gitolite error -> " + " " + ex.message) |
78 | 78 | raise Gitolite::AccessDenied, ex.message |
79 | 79 | |
80 | - rescue Exception => ex | |
81 | - log(ex.class.name + " " + ex.message) | |
82 | - raise Gitolite::AccessDenied.new("gitolite timeout") | |
80 | + #rescue Exception => ex | |
81 | + #log(ex.class.name + " " + ex.message) | |
82 | + #raise Gitolite::AccessDenied.new("gitolite timeout") | |
83 | 83 | end |
84 | 84 | |
85 | 85 | def log message |
... | ... | @@ -202,25 +202,41 @@ module Gitlab |
202 | 202 | end |
203 | 203 | |
204 | 204 | def push tmp_dir |
205 | - Dir.chdir(File.join(tmp_dir, "gitolite")) | |
206 | - raise "Git add failed." unless system('git add -A') | |
207 | - system('git commit -m "GitLab"') # git commit returns 0 on success, and 1 if there is nothing to commit | |
208 | - raise "Git commit failed." unless [0,1].include? $?.exitstatus | |
205 | + output, status = popen('git add -A') | |
206 | + raise "Git add failed." unless status.zero? | |
209 | 207 | |
210 | - stdin, stdout, stderr = Open3.popen3('git push') | |
211 | - push_output = stderr.read | |
212 | - push_status = $?.to_i | |
208 | + # git commit returns 0 on success, and 1 if there is nothing to commit | |
209 | + output, status = popen('git commit -m "GitLab"') | |
210 | + raise "Git add failed." unless [0,1].include?(status) | |
213 | 211 | |
214 | - if push_output =~ /remote\: FATAL/ | |
215 | - raise BrokenGitolite, push_output | |
212 | + output, status = popen('git push') | |
213 | + | |
214 | + if output =~ /remote\: FATAL/ | |
215 | + raise BrokenGitolite, output | |
216 | 216 | end |
217 | 217 | |
218 | - if push_status.zero? | |
219 | - Dir.chdir(Rails.root) | |
218 | + if status.zero? || output =~ /Everything up\-to\-date/ | |
219 | + return true | |
220 | 220 | else |
221 | 221 | raise PushError, "unable to push gitolite-admin repo" |
222 | 222 | end |
223 | 223 | end |
224 | + | |
225 | + def popen(cmd) | |
226 | + path = File.join(config_tmp_dir,'gitolite') | |
227 | + vars = { "PWD" => path } | |
228 | + options = { :chdir => path } | |
229 | + | |
230 | + @cmd_output = "" | |
231 | + @cmd_status = 0 | |
232 | + Open3.popen3(vars, cmd, options) do |stdin, stdout, stderr, wait_thr| | |
233 | + @cmd_status = wait_thr.value.exitstatus | |
234 | + @cmd_output << stdout.read | |
235 | + @cmd_output << stderr.read | |
236 | + end | |
237 | + | |
238 | + return @cmd_output, @cmd_status | |
239 | + end | |
224 | 240 | end |
225 | 241 | end |
226 | 242 | ... | ... |