Skip to content

Commit 3321f6c

Browse files
author
root
committed
Fix unnecessary and potentialy annoying users keys deletion, improved logs output, indent
1 parent 28dec23 commit 3321f6c

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

Diff for: lib/libs/git_hosting.rb

+17-8
Original file line numberDiff line numberDiff line change
@@ -193,12 +193,12 @@ def self.get_full_parent_path(repository, is_file_path)
193193
def self.lock(retries)
194194
is_locked = false
195195
if @@lock_file.nil?
196-
@@lock_file=File.new(File.join(get_tmp_dir,'redmine_git_hosting_lock'),File::CREAT|File::RDONLY)
196+
@@lock_file = File.new(File.join(get_tmp_dir, 'redmine_git_hosting_lock'), File::CREAT|File::RDONLY)
197197
end
198198

199199
while retries > 0
200200
is_locked = @@lock_file.flock(File::LOCK_EX|File::LOCK_NB)
201-
retries-=1
201+
retries -= 1
202202
if (!is_locked) && retries > 0
203203
sleep 1
204204
end
@@ -741,7 +741,8 @@ def self.fixup_gitolite_admin
741741

742742
%x[#{GitHosting.git_user_runner} 'rm -rf "#{File.join(Dir.tmpdir,'fixrepo')}"']
743743
%x[rm -rf "#{File.join(Dir.tmpdir,'fixconf')}"]
744-
logger.info "[GitHosting] Success!"
744+
logger.warn "[GitHosting] Success!"
745+
logger.warn ""
745746
rescue => e
746747
logger.error "Failed to reestablish Gitolite Admin key."
747748
logger.error e.message
@@ -787,7 +788,7 @@ def self.commit_gitolite_admin(*args)
787788
logger.info ""
788789
rescue
789790
logger.error "Problems committing changes to Gitolite Admin repository!! Probably requires human intervention"
790-
logger.info ""
791+
logger.error ""
791792
raise GitHostingException, "Gitolite Admin repository commit failure"
792793
end
793794
end
@@ -872,15 +873,18 @@ def self.update_repositories(*args)
872873

873874
if git_projects.empty?
874875
logger.info "[GitHosting] Got no projects to work on..."
876+
logger.info ""
875877
return
876878
else
877879
logger.info "[GitHosting] Got projects, move on!"
880+
logger.info ""
878881
end
879882

880883
if(defined?(@@recursionCheck))
881884
if(@@recursionCheck)
882885
# This shouldn't happen any more -- log as error
883886
logger.error "[GitHosting] update_repositories() exited with positive recursionCheck flag!"
887+
logger.error ""
884888
return
885889
end
886890
end
@@ -890,14 +894,14 @@ def self.update_repositories(*args)
890894
# Grab actual lock
891895
if !lock(GitHostingConf.lock_wait_time)
892896
logger.error "[GitHosting] update_repositories() exited without acquiring lock!"
897+
logger.error ""
893898
@@recursionCheck = false
894899
return
895900
end
896901

897902
begin
898903
# Make sure we have gitolite-admin cloned.
899904
# If have uncommitted changes, reflect in "changed" flag.
900-
logger.info ""
901905
logger.info "[GitHosting] ############ GRAB GITOLITE ADMIN REPO ############"
902906
changed = !clone_or_pull_gitolite_admin(flags[:resync_all])
903907

@@ -907,8 +911,10 @@ def self.update_repositories(*args)
907911
logger.info ""
908912
logger.info "[GitHosting] ############ UPDATE SSH KEYS ############"
909913
logger.info "[GitHosting] Updating key directory for projects : '#{git_projects.join ', '}'"
914+
910915
keydir = File.join(repo_dir, "keydir")
911916
old_keyhash = {}
917+
912918
Dir.foreach(keydir) do |keyfile|
913919
user_token = GitolitePublicKey.ident_to_user_token(keyfile)
914920
if !user_token.nil?
@@ -919,6 +925,7 @@ def self.update_repositories(*args)
919925

920926
# Collect relevant users into hash with user as key and activity (in some active project) as value
921927
(git_projects.select{|proj| proj.active? && proj.module_enabled?(:repository)}.map{|proj| proj.member_principals.map(&:user).compact}.flatten.uniq << GitolitePublicKey::DEPLOY_PSEUDO_USER).each do |cur_user|
928+
922929
if cur_user == GitolitePublicKey::DEPLOY_PSEUDO_USER
923930
active_keys = DeploymentCredential.active.select(&:honored?).map(&:gitolite_public_key).uniq
924931
cur_token = cur_user
@@ -941,6 +948,7 @@ def self.update_repositories(*args)
941948
active_keys.each do |key|
942949
key_id = key.identifier
943950
key_token = GitolitePublicKey.ident_to_user_token(key_id)
951+
944952
if key_token != cur_token
945953
# Rare case -- user login changed. Fix it.
946954
key_id = key.reset_identifier
@@ -949,10 +957,11 @@ def self.update_repositories(*args)
949957
old_keynames += (old_keyhash[key_token] || [])
950958
old_keyhash.delete(key_token)
951959
end
952-
cur_keynames << "#{key_id}.pub"
960+
cur_keynames.push "#{key_id}.pub"
953961
end
954962

955-
(old_keynames - cur_keynames).each do |keyname|
963+
keys_to_delete = (old_keynames - cur_keynames)
964+
keys_to_delete.each do |keyname|
956965
logger.warn "[GitHosting] Removing Redmine key from Gitolite : '#{keyname}'"
957966
%x[git --git-dir='#{repo_dir}/.git' --work-tree='#{repo_dir}' rm keydir/#{keyname}]
958967
changed = true
@@ -976,7 +985,7 @@ def self.update_repositories(*args)
976985
# Remove keys for deleted users
977986
orphanString = flags[:resync_all] ? "orphan " : ""
978987

979-
if flags[:resync_all] || flags[:delete] || flags[:archive]
988+
if flags[:resync_all] || flags[:archive]
980989
# All keys left in old_keyhash should be for users nolonger authorized for gitolite repos
981990
old_keyhash.each_value do |keyset|
982991
keyset.each do |keyname|

0 commit comments

Comments
 (0)