diff --git a/lib/gitlab/backend/gitolite.rb b/lib/gitlab/backend/gitolite.rb index fe5dcef40a9fd5543fe0d97162e94f6e654ca5ba..f441df82ac7944d5bd1c9473dc74ac5cf5164148 100644 --- a/lib/gitlab/backend/gitolite.rb +++ b/lib/gitlab/backend/gitolite.rb @@ -16,8 +16,9 @@ module Gitlab end def remove_key key_id, projects - config.apply do |config| - config.rm_key(key_id) + save = false # Gitolite::GitoliteAdmin:save would restore all (including deleted) keys. + config.apply(save) do |config| + config.rm_key(key_id) # Changes will be commited so the save is not needed. config.update_projects(projects) end end diff --git a/lib/gitlab/backend/gitolite_config.rb b/lib/gitlab/backend/gitolite_config.rb index f51e8efc3706836a065f8b2606f0622080eba204..e46f48f56120a5eeaa12088f66753df3d9c074cf 100644 --- a/lib/gitlab/backend/gitolite_config.rb +++ b/lib/gitlab/backend/gitolite_config.rb @@ -17,7 +17,7 @@ module Gitlab @ga_repo ||= ::Gitolite::GitoliteAdmin.new(File.join(config_tmp_dir,'gitolite')) end - def apply + def apply(save = true) Timeout::timeout(30) do File.open(File.join(Rails.root, 'tmp', "gitlabhq-gitolite.lock"), "w+") do |f| begin @@ -41,7 +41,7 @@ module Gitlab # Save changes in # gitolite-admin repo # before pusht it - ga_repo.save + ga_repo.save if save # Push gitolite-admin repo # to apply all changes