Remove chdir inside runtime. Improved gitolite shell commands
This commit is contained in:
parent
cfe8983272
commit
54a24608a2
3 changed files with 39 additions and 14 deletions
3
Gemfile
3
Gemfile
|
@ -127,6 +127,9 @@ group :development do
|
||||||
|
|
||||||
# Docs generator
|
# Docs generator
|
||||||
gem "sdoc"
|
gem "sdoc"
|
||||||
|
|
||||||
|
# thin instead webrick
|
||||||
|
gem 'thin'
|
||||||
end
|
end
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
|
|
|
@ -144,6 +144,7 @@ GEM
|
||||||
colorize (0.5.8)
|
colorize (0.5.8)
|
||||||
connection_pool (1.0.0)
|
connection_pool (1.0.0)
|
||||||
crack (0.3.1)
|
crack (0.3.1)
|
||||||
|
daemons (1.1.9)
|
||||||
devise (2.1.2)
|
devise (2.1.2)
|
||||||
bcrypt-ruby (~> 3.0)
|
bcrypt-ruby (~> 3.0)
|
||||||
orm_adapter (~> 0.1)
|
orm_adapter (~> 0.1)
|
||||||
|
@ -436,6 +437,10 @@ GEM
|
||||||
test_after_commit (0.0.1)
|
test_after_commit (0.0.1)
|
||||||
therubyracer (0.10.2)
|
therubyracer (0.10.2)
|
||||||
libv8 (~> 3.3.10)
|
libv8 (~> 3.3.10)
|
||||||
|
thin (1.5.0)
|
||||||
|
daemons (>= 1.0.9)
|
||||||
|
eventmachine (>= 0.12.6)
|
||||||
|
rack (>= 1.0.0)
|
||||||
thor (0.16.0)
|
thor (0.16.0)
|
||||||
tilt (1.3.3)
|
tilt (1.3.3)
|
||||||
timers (1.0.2)
|
timers (1.0.2)
|
||||||
|
@ -542,6 +547,7 @@ DEPENDENCIES
|
||||||
stamp
|
stamp
|
||||||
test_after_commit
|
test_after_commit
|
||||||
therubyracer
|
therubyracer
|
||||||
|
thin
|
||||||
uglifier (~> 1.3.0)
|
uglifier (~> 1.3.0)
|
||||||
unicorn (~> 4.4.0)
|
unicorn (~> 4.4.0)
|
||||||
webmock
|
webmock
|
||||||
|
|
|
@ -77,9 +77,9 @@ module Gitlab
|
||||||
log("Gitolite error -> " + " " + ex.message)
|
log("Gitolite error -> " + " " + ex.message)
|
||||||
raise Gitolite::AccessDenied, ex.message
|
raise Gitolite::AccessDenied, ex.message
|
||||||
|
|
||||||
rescue Exception => ex
|
#rescue Exception => ex
|
||||||
log(ex.class.name + " " + ex.message)
|
#log(ex.class.name + " " + ex.message)
|
||||||
raise Gitolite::AccessDenied.new("gitolite timeout")
|
#raise Gitolite::AccessDenied.new("gitolite timeout")
|
||||||
end
|
end
|
||||||
|
|
||||||
def log message
|
def log message
|
||||||
|
@ -202,25 +202,41 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def push tmp_dir
|
def push tmp_dir
|
||||||
Dir.chdir(File.join(tmp_dir, "gitolite"))
|
output, status = popen('git add -A')
|
||||||
raise "Git add failed." unless system('git add -A')
|
raise "Git add failed." unless status.zero?
|
||||||
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
|
|
||||||
|
|
||||||
stdin, stdout, stderr = Open3.popen3('git push')
|
# git commit returns 0 on success, and 1 if there is nothing to commit
|
||||||
push_output = stderr.read
|
output, status = popen('git commit -m "GitLab"')
|
||||||
push_status = $?.to_i
|
raise "Git add failed." unless [0,1].include?(status)
|
||||||
|
|
||||||
if push_output =~ /remote\: FATAL/
|
output, status = popen('git push')
|
||||||
raise BrokenGitolite, push_output
|
|
||||||
|
if output =~ /remote\: FATAL/
|
||||||
|
raise BrokenGitolite, output
|
||||||
end
|
end
|
||||||
|
|
||||||
if push_status.zero?
|
if status.zero? || output =~ /Everything up\-to\-date/
|
||||||
Dir.chdir(Rails.root)
|
return true
|
||||||
else
|
else
|
||||||
raise PushError, "unable to push gitolite-admin repo"
|
raise PushError, "unable to push gitolite-admin repo"
|
||||||
end
|
end
|
||||||
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue