Do gitolite calls async. Remove satellite with project remove
This commit is contained in:
parent
b4f16faafd
commit
1c5876eb7b
12 changed files with 90 additions and 52 deletions
|
@ -32,16 +32,10 @@ module Projects
|
|||
@project.namespace_id = current_user.namespace_id
|
||||
end
|
||||
|
||||
Project.transaction do
|
||||
@project.creator = current_user
|
||||
@project.save!
|
||||
@project.creator = current_user
|
||||
|
||||
# Add user as project master
|
||||
@project.users_projects.create!(project_access: UsersProject::MASTER, user: current_user)
|
||||
|
||||
# when project saved no team member exist so
|
||||
# project repository should be updated after first user add
|
||||
@project.update_repository
|
||||
if @project.save
|
||||
@project.users_projects.create(project_access: UsersProject::MASTER, user: current_user)
|
||||
end
|
||||
|
||||
@project
|
||||
|
|
|
@ -299,6 +299,9 @@ class Project < ActiveRecord::Base
|
|||
def trigger_post_receive(oldrev, newrev, ref, user)
|
||||
data = post_receive_data(oldrev, newrev, ref, user)
|
||||
|
||||
# Create satellite
|
||||
self.satellite.create unless self.satellite.exists?
|
||||
|
||||
# Create push event
|
||||
self.observe_push(data)
|
||||
|
||||
|
@ -313,9 +316,6 @@ class Project < ActiveRecord::Base
|
|||
self.execute_services(data.dup)
|
||||
end
|
||||
|
||||
# Create satellite
|
||||
self.satellite.create unless self.satellite.exists?
|
||||
|
||||
# Discover the default branch, but only if it hasn't already been set to
|
||||
# something else
|
||||
if repository && default_branch.nil?
|
||||
|
@ -460,11 +460,17 @@ class Project < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def update_repository
|
||||
gitolite.update_repository(self)
|
||||
GitoliteWorker.perform_async(
|
||||
:update_repository,
|
||||
self.id
|
||||
)
|
||||
end
|
||||
|
||||
def destroy_repository
|
||||
gitolite.remove_repository(self)
|
||||
GitoliteWorker.perform_async(
|
||||
:remove_repository,
|
||||
self.path_with_namespace
|
||||
)
|
||||
end
|
||||
|
||||
def repo_exists?
|
||||
|
|
|
@ -129,7 +129,7 @@ class UsersProject < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def update_repository
|
||||
gitolite.update_repository(project)
|
||||
project.update_repository
|
||||
end
|
||||
|
||||
def project_access_human
|
||||
|
|
|
@ -10,6 +10,7 @@ class ProjectObserver < ActiveRecord::Observer
|
|||
def after_destroy(project)
|
||||
log_info("Project \"#{project.name}\" was removed")
|
||||
|
||||
project.satellite.destroy
|
||||
project.destroy_repository
|
||||
end
|
||||
|
||||
|
|
10
app/workers/gitolite_worker.rb
Normal file
10
app/workers/gitolite_worker.rb
Normal file
|
@ -0,0 +1,10 @@
|
|||
class GitoliteWorker
|
||||
include Sidekiq::Worker
|
||||
include Gitolited
|
||||
|
||||
sidekiq_options queue: :gitolite
|
||||
|
||||
def perform(action, arg)
|
||||
gitolite.send(action, arg)
|
||||
end
|
||||
end
|
|
@ -13,13 +13,14 @@ class PostReceive
|
|||
|
||||
# Ignore push from non-gitlab users
|
||||
user = if identifier.eql? Gitlab.config.gitolite.admin_key
|
||||
email = project.repository.commit(newrev).author.email rescue nil
|
||||
User.find_by_email(email) if email
|
||||
elsif /^[A-Z0-9._%a-z\-]+@(?:[A-Z0-9a-z\-]+\.)+[A-Za-z]{2,4}$/.match(identifier)
|
||||
User.find_by_email(identifier)
|
||||
else
|
||||
Key.find_by_identifier(identifier).try(:user)
|
||||
end
|
||||
email = project.repository.commit(newrev).author.email rescue nil
|
||||
User.find_by_email(email) if email
|
||||
elsif /^[A-Z0-9._%a-z\-]+@(?:[A-Z0-9a-z\-]+\.)+[A-Za-z]{2,4}$/.match(identifier)
|
||||
User.find_by_email(identifier)
|
||||
else
|
||||
Key.find_by_identifier(identifier).try(:user)
|
||||
end
|
||||
|
||||
return false unless user
|
||||
|
||||
project.trigger_post_receive(oldrev, newrev, ref, user)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue