Do gitolite calls async. Remove satellite with project remove

This commit is contained in:
Dmitriy Zaporozhets 2013-01-28 17:22:45 +02:00
parent b4f16faafd
commit 1c5876eb7b
12 changed files with 90 additions and 52 deletions

View file

@ -22,7 +22,8 @@ module Gitlab
end
end
def update_repository project
def update_repository project_id
project = Project.find(project_id)
config.update_project!(project)
end
@ -33,8 +34,15 @@ module Gitlab
end
end
def remove_repository project
config.destroy_project!(project)
# Remove repository from gitolite
#
# name - project path with namespace
#
# Ex.
# remove_repository("gitlab/gitlab-ci")
#
def remove_repository(name)
config.destroy_project!(name)
end
def url_to_repo path

View file

@ -4,6 +4,8 @@ require 'fileutils'
module Gitlab
class GitoliteConfig
include Gitlab::Popen
class PullError < StandardError; end
class PushError < StandardError; end
class BrokenGitolite < StandardError; end
@ -87,12 +89,14 @@ module Gitlab
Gitlab::GitLogger.error(message)
end
def destroy_project(project)
# do rm-rf only if repository exists
if project.repository
FileUtils.rm_rf(project.repository.path_to_repo)
end
conf.rm_repo(project.path_with_namespace)
def path_to_repo(name)
File.join(Gitlab.config.gitolite.repos_path, "#{name}.git")
end
def destroy_project(name)
full_path = path_to_repo(name)
FileUtils.rm_rf(full_path) if File.exists?(full_path)
conf.rm_repo(name)
end
def clean_repo repo_name
@ -210,14 +214,14 @@ module Gitlab
end
def push
output, status = popen('git add -A')
output, status = popen('git add -A', tmp_conf_path)
raise "Git add failed." unless status.zero?
# git commit returns 0 on success, and 1 if there is nothing to commit
output, status = popen('git commit -m "GitLab"')
output, status = popen('git commit -m "GitLab"', tmp_conf_path)
raise "Git add failed." unless [0,1].include?(status)
output, status = popen('git push')
output, status = popen('git push', tmp_conf_path)
if output =~ /remote\: FATAL/
raise BrokenGitolite, output
@ -230,20 +234,8 @@ module Gitlab
end
end
def popen(cmd, path = nil)
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
def tmp_conf_path
File.join(config_tmp_dir,'gitolite')
end
end
end