@@ -56,19 +56,19 @@ def hook_params_installed?
56
56
installed = { }
57
57
58
58
if @global_hook_params [ "redmineurl" ] != @gitolite_hooks_url
59
- installed [ 'redmineurl' ] = set_hook_param ( "redmineurl" , @gitolite_hooks_url )
59
+ installed [ 'redmineurl' ] = set_git_config_param ( "redmineurl" , @gitolite_hooks_url )
60
60
else
61
61
installed [ 'redmineurl' ] = true
62
62
end
63
63
64
64
if @global_hook_params [ "debugmode" ] != @debug_mode . to_s
65
- installed [ 'debugmode' ] = set_hook_param ( "debugmode" , @debug_mode . to_s )
65
+ installed [ 'debugmode' ] = set_git_config_param ( "debugmode" , @debug_mode . to_s )
66
66
else
67
67
installed [ 'debugmode' ] = true
68
68
end
69
69
70
70
if @global_hook_params [ "asyncmode" ] != @async_mode . to_s
71
- installed [ 'asyncmode' ] = set_hook_param ( "asyncmode" , @async_mode . to_s )
71
+ installed [ 'asyncmode' ] = set_git_config_param ( "asyncmode" , @async_mode . to_s )
72
72
else
73
73
installed [ 'asyncmode' ] = true
74
74
end
@@ -321,26 +321,49 @@ def get_git_config_params(namespace)
321
321
end
322
322
323
323
324
- # Returns the global gitconfig prefix for
325
- # a config with that given key under the
326
- # hooks namespace.
327
- #
328
- def gitconfig_prefix ( key )
329
- [ GITOLITE_HOOKS_NAMESPACE , '.' , key ] . join
330
- end
324
+ def set_git_config_param ( key , value , namespace = GITOLITE_HOOKS_NAMESPACE )
325
+ key = gitconfig_prefix ( key , namespace )
331
326
327
+ return unset_git_config_param ( key ) if value == ''
332
328
333
- def set_hook_param ( name , value )
334
- logger . info { "Set Git hooks global parameter : #{ name } (#{ value } )" }
329
+ logger . info { "Set Git hooks global parameter : #{ key } (#{ value } )" }
335
330
336
331
begin
337
- GitoliteWrapper . sudo_capture ( 'git' , 'config' , '--global' , gitconfig_prefix ( name ) , value )
332
+ GitoliteWrapper . sudo_capture ( 'git' , 'config' , '--global' , key , value )
338
333
return true
339
334
rescue GitHosting ::GitHostingException => e
340
- logger . error { "Error while setting Git hooks global parameter : #{ name } (#{ value } )" }
335
+ logger . error { "Error while setting Git hooks global parameter : #{ key } (#{ value } )" }
336
+ logger . error { e . output }
341
337
return false
342
338
end
343
339
end
344
340
341
+
342
+ def unset_git_config_param ( key )
343
+ logger . info { "Unset Git hooks global parameter : #{ key } " }
344
+
345
+ begin
346
+ _ , _ , code = GitoliteWrapper . sudo_shell ( 'git' , 'config' , '--global' , '--unset' , key )
347
+ return true
348
+ rescue GitHosting ::GitHostingException => e
349
+ if code == 5
350
+ return true
351
+ else
352
+ logger . error { "Error while removing Git hooks global parameter : #{ key } " }
353
+ logger . error { e . output }
354
+ return false
355
+ end
356
+ end
357
+ end
358
+
359
+
360
+ # Returns the global gitconfig prefix for
361
+ # a config with that given key under the
362
+ # hooks namespace.
363
+ #
364
+ def gitconfig_prefix ( key , namespace )
365
+ [ namespace , '.' , key ] . join
366
+ end
367
+
345
368
end
346
369
end
0 commit comments