Skip to content
Snippets Groups Projects
Commit 54a24608 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Remove chdir inside runtime. Improved gitolite shell commands

parent cfe89832
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -127,6 +127,9 @@ group :development do
 
# Docs generator
gem "sdoc"
# thin instead webrick
gem 'thin'
end
 
group :development, :test do
Loading
Loading
Loading
Loading
@@ -144,6 +144,7 @@ GEM
colorize (0.5.8)
connection_pool (1.0.0)
crack (0.3.1)
daemons (1.1.9)
devise (2.1.2)
bcrypt-ruby (~> 3.0)
orm_adapter (~> 0.1)
Loading
Loading
@@ -436,6 +437,10 @@ GEM
test_after_commit (0.0.1)
therubyracer (0.10.2)
libv8 (~> 3.3.10)
thin (1.5.0)
daemons (>= 1.0.9)
eventmachine (>= 0.12.6)
rack (>= 1.0.0)
thor (0.16.0)
tilt (1.3.3)
timers (1.0.2)
Loading
Loading
@@ -542,6 +547,7 @@ DEPENDENCIES
stamp
test_after_commit
therubyracer
thin
uglifier (~> 1.3.0)
unicorn (~> 4.4.0)
webmock
Loading
Loading
@@ -77,9 +77,9 @@ module Gitlab
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")
#rescue Exception => ex
#log(ex.class.name + " " + ex.message)
#raise Gitolite::AccessDenied.new("gitolite timeout")
end
 
def log message
Loading
Loading
@@ -202,25 +202,41 @@ module Gitlab
end
 
def push tmp_dir
Dir.chdir(File.join(tmp_dir, "gitolite"))
raise "Git add failed." unless system('git add -A')
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
output, status = popen('git add -A')
raise "Git add failed." unless status.zero?
 
stdin, stdout, stderr = Open3.popen3('git push')
push_output = stderr.read
push_status = $?.to_i
# git commit returns 0 on success, and 1 if there is nothing to commit
output, status = popen('git commit -m "GitLab"')
raise "Git add failed." unless [0,1].include?(status)
 
if push_output =~ /remote\: FATAL/
raise BrokenGitolite, push_output
output, status = popen('git push')
if output =~ /remote\: FATAL/
raise BrokenGitolite, output
end
 
if push_status.zero?
Dir.chdir(Rails.root)
if status.zero? || output =~ /Everything up\-to\-date/
return true
else
raise PushError, "unable to push gitolite-admin repo"
end
end
def popen(cmd)
path = File.join(config_tmp_dir,'gitolite')
vars = { "PWD" => path }
options = { :chdir => path }
@cmd_output = ""
@cmd_status = 0
Open3.popen3(vars, cmd, options) do |stdin, stdout, stderr, wait_thr|
@cmd_status = wait_thr.value.exitstatus
@cmd_output << stdout.read
@cmd_output << stderr.read
end
return @cmd_output, @cmd_status
end
end
end
 
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment