Skip to content

Commit 77bb34c

Browse files
author
root
committed
Fix #359
1 parent ce01668 commit 77bb34c

File tree

11 files changed

+99
-50
lines changed

11 files changed

+99
-50
lines changed

Diff for: app/helpers/gitolite_plugin_settings_helper.rb

+16-4
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,29 @@ def render_gitolite_params_status(params)
55
content = ''
66
params.each do |param, installed|
77
content << content_tag(:li, style: 'padding: 2px;') do
8-
image_tag(image_for_param(installed), style: 'vertical-align: bottom;') +
9-
content_tag(:em, param)
8+
image_tag(image_for_param(installed), style: 'vertical-align: bottom; padding-right: 5px;') +
9+
content_tag(:em, label_for_param(param, installed))
1010
end
1111
end
1212
content.html_safe
1313
end
1414
end
1515

1616

17-
def image_for_param(bool)
18-
bool ? 'true.png' : 'exclamation.png'
17+
def label_for_param(param, install_status)
18+
install_status == 2 ? "#{param} (#{l(:label_gitolite_hook_untouched)})" : param
19+
end
20+
21+
22+
def image_for_param(install_status)
23+
case install_status
24+
when 0, true
25+
'true.png'
26+
when 1, false
27+
'exclamation.png'
28+
when 2
29+
'warning.png'
30+
end
1931
end
2032

2133

Diff for: app/views/settings/redmine_git_hosting/_gitolite_config_test.html.haml

+14
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,20 @@
2020
%td= l(:label_sudo_redmine_to_gitolite_user)
2121
%td= image_tag (RedmineGitHosting::Config.can_redmine_sudo_to_gitolite_user? ? 'true.png' : 'exclamation.png')
2222

23+
- gitolite_checks = RedmineGitHosting::Config.check_hooks_install!
24+
25+
%tr
26+
%td= l(:label_gitolite_hooks_installed)
27+
%td= render_gitolite_params_status(gitolite_checks[:hook_files])
28+
29+
%tr
30+
%td= l(:label_gitolite_hooks_params_installed)
31+
%td= render_gitolite_params_status(gitolite_checks[:global_params])
32+
33+
%tr
34+
%td= l(:label_gitolite_mailer_params_installed)
35+
%td= render_gitolite_params_status(gitolite_checks[:mailer_params])
36+
2337
%tr
2438
%td= l(:label_mirroring_keys_installed)
2539
%td= image_tag (RedmineGitHosting::Config.mirroring_keys_installed?(reset: true) ? 'true.png' : 'exclamation.png')

Diff for: config/locales/settings/en.yml

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ en:
8989
label_gitolite_hooks_namespace: Hooks Git namespace
9090
label_default_gitolite_hooks_url: Default URL
9191
label_install_gitolite_hooks: Install hooks !
92+
label_gitolite_hook_untouched: hook let untouched
9293

9394
# Gitolite Cache Config
9495
label_tab_cache: Cache

Diff for: config/locales/settings/fr.yml

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ fr:
8989
label_gitolite_hooks_namespace: Espace de nom Git des hooks
9090
label_default_gitolite_hooks_url: URL par défaut
9191
label_install_gitolite_hooks: Installer les hooks !
92+
label_gitolite_hook_untouched: hook non mis à jour
9293

9394
# Gitolite Cache Config
9495
label_tab_cache: Cache

Diff for: lib/redmine_git_hosting/config/gitolite_hooks.rb

+10-1
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,17 @@ def check_hooks_install!
5959
end
6060

6161

62+
def install_hooks!
63+
{
64+
hook_files: RedmineGitHosting::GitoliteHooks.install_hooks!,
65+
global_params: RedmineGitHosting::GitoliteParams::GlobalParams.new.install!,
66+
mailer_params: RedmineGitHosting::GitoliteParams::MailerParams.new.install!
67+
}
68+
end
69+
70+
6271
def update_hook_params!
63-
RedmineGitHosting::GitoliteParams::GlobalParams.new.installed?
72+
RedmineGitHosting::GitoliteParams::GlobalParams.new.install!
6473
end
6574

6675
end

Diff for: lib/redmine_git_hosting/gitolite_hook.rb

+26-7
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ def def_field(*names)
1717

1818
def_field :name, :source, :destination, :executable
1919

20-
attr_reader :source_dir, :force_update
20+
attr_reader :source_dir
2121

2222

2323
def initialize(source_dir, &block)
24-
@source_dir = source_dir
25-
@force_update = RedmineGitHosting::Config.gitolite_overwrite_existing_hooks?
24+
@source_dir = source_dir
2625
instance_eval(&block)
2726
end
2827

@@ -50,15 +49,30 @@ def filemode
5049

5150

5251
def installed?
52+
if !file_exists?
53+
1
54+
elsif hook_file_has_changed?
55+
2
56+
else
57+
0
58+
end
59+
end
60+
61+
62+
def install!
5363
if !file_exists?
5464
logger.info("Hook '#{name}' does not exist, installing it ...")
5565
install_hook
56-
elsif hook_file_has_changed? && force_update
66+
elsif hook_file_has_changed?
5767
logger.warn("Hook '#{name}' is already present but it's not ours!")
58-
logger.info("Restoring '#{name}' hook since forceInstallHook == true")
59-
install_hook
68+
if force_update?
69+
logger.info("Restoring '#{name}' hook since forceInstallHook == true")
70+
install_hook
71+
else
72+
logger.info("Leaving '#{name}' hook untouched since forceInstallHook == false")
73+
end
6074
end
61-
file_exists?
75+
installed?
6276
end
6377

6478

@@ -74,6 +88,11 @@ def install_hook
7488
end
7589

7690

91+
def force_update?
92+
RedmineGitHosting::Config.gitolite_overwrite_existing_hooks?
93+
end
94+
95+
7796
def logger
7897
RedmineGitHosting.logger
7998
end

Diff for: lib/redmine_git_hosting/gitolite_hooks.rb

+9
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ def hooks_installed?
2828
end
2929

3030

31+
def install_hooks!
32+
installed = {}
33+
registered_hooks.each do |hook|
34+
installed[hook.name] = hook.install!
35+
end
36+
installed
37+
end
38+
39+
3140
def gitolite_hook(&block)
3241
@gitolite_hooks << RedmineGitHosting::GitoliteHook.new(@source_dir, &block)
3342
end

Diff for: lib/redmine_git_hosting/gitolite_params/global_params.rb

+9-31
Original file line numberDiff line numberDiff line change
@@ -30,41 +30,19 @@ def initialize
3030

3131

3232
def installed?
33-
gitolite_hooks_url_set?
34-
debug_mode_set?
35-
async_mode_set?
33+
@installed['redmineurl'] = (current_params['redmineurl'] == gitolite_hooks_url)
34+
@installed['debugmode'] = (current_params['debugmode'] == debug_mode)
35+
@installed['asyncmode'] = (current_params['asyncmode'] == async_mode)
3636
@installed
3737
end
3838

3939

40-
private
41-
42-
43-
def gitolite_hooks_url_set?
44-
if current_params['redmineurl'] != gitolite_hooks_url
45-
@installed['redmineurl'] = set_git_config_param(namespace, 'redmineurl', gitolite_hooks_url)
46-
else
47-
@installed['redmineurl'] = true
48-
end
49-
end
50-
51-
52-
def debug_mode_set?
53-
if current_params['debugmode'] != debug_mode
54-
@installed['debugmode'] = set_git_config_param(namespace, 'debugmode', debug_mode)
55-
else
56-
@installed['debugmode'] = true
57-
end
58-
end
59-
60-
61-
def async_mode_set?
62-
if current_params['asyncmode'] != async_mode
63-
@installed['asyncmode'] = set_git_config_param(namespace, 'asyncmode', async_mode)
64-
else
65-
@installed['asyncmode'] = true
66-
end
67-
end
40+
def install!
41+
@installed['redmineurl'] = set_git_config_param(namespace, 'redmineurl', gitolite_hooks_url)
42+
@installed['debugmode'] = set_git_config_param(namespace, 'debugmode', debug_mode)
43+
@installed['asyncmode'] = set_git_config_param(namespace, 'asyncmode', async_mode)
44+
@installed
45+
end
6846

6947
end
7048
end

Diff for: lib/redmine_git_hosting/gitolite_params/mailer_params.rb

+11-5
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,17 @@ def initialize
2424

2525
def installed?
2626
mailer_params.each do |param|
27-
if current_params[param] != current_mailer_params[param]
28-
@installed[param] = set_git_config_param(namespace, param, current_mailer_params[param])
29-
else
30-
@installed[param] = true
31-
end
27+
next if current_mailer_params[param].empty?
28+
@installed[param] = (current_params[param] == current_mailer_params[param])
29+
end
30+
@installed
31+
end
32+
33+
34+
def install!
35+
mailer_params.each do |param|
36+
next if current_mailer_params[param].empty?
37+
@installed[param] = set_git_config_param(namespace, param, current_mailer_params[param])
3238
end
3339
@installed
3440
end

Diff for: lib/redmine_git_hosting/patches/settings_controller_patch.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def install_gitolite_hooks
2222
render_404
2323
return
2424
end
25-
@gitolite_checks = RedmineGitHosting::Config.check_hooks_install!
25+
@gitolite_checks = RedmineGitHosting::Config.install_hooks!
2626
end
2727

2828
end

Diff for: lib/tasks/redmine_git_hosting.rake

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ namespace :redmine_git_hosting do
6161
puts "Installing/updating Gitolite hooks"
6262
puts "----------------------------------"
6363
puts "Results :"
64-
result = RedmineGitHosting::Config.check_hooks_install!
64+
result = RedmineGitHosting::Config.install_hooks!
6565
puts YAML::dump(result)
6666
puts "Done!"
6767
end

0 commit comments

Comments
 (0)