Skip to content

Commit aa52075

Browse files
author
root
committed
Add support for 'one user' mode (fix #526)
1 parent af0d817 commit aa52075

File tree

5 files changed

+24
-5
lines changed

5 files changed

+24
-5
lines changed

Diff for: lib/redmine_git_hosting/commands/git.rb

+6-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ module Git
1313
# Send Git command with Sudo
1414
#
1515
def sudo_git(*params)
16-
cmd = sudo_git_cmd.concat(params)
16+
if RedmineGitHosting::Config.gitolite_use_sudo?
17+
cmd = sudo_git_cmd.concat(params)
18+
else
19+
cmd = ['git'].concat(params)
20+
end
1721
capture(cmd)
1822
end
1923

@@ -67,7 +71,7 @@ def sudo_set_git_global_param(namespace, key, value)
6771
# Return a hash with global config parameters.
6872
def sudo_get_git_global_params(namespace)
6973
begin
70-
params = sudo_git('config', '-f', '.gitconfig', '--get-regexp', namespace).split("\n")
74+
params = sudo_git('config', '--get-regexp', namespace).split("\n")
7175
rescue RedmineGitHosting::Error::GitoliteCommandException => e
7276
logger.error("Problems to retrieve Gitolite hook parameters in Gitolite config 'namespace : #{namespace}'")
7377
params = []

Diff for: lib/redmine_git_hosting/commands/gitolite.rb

+7-1
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,14 @@ def sudo_repository_empty?(repo_path)
4646

4747

4848
def sudo_git_objects_count(repo_path)
49+
if RedmineGitHosting::Config.gitolite_use_sudo?
50+
cmd = ['eval', 'find', repo_path, '-type', 'f', '|', 'wc', '-l']
51+
else
52+
cmd = ['bash', '-c', "find #{repo_path} -type f | wc -l"]
53+
end
54+
4955
begin
50-
sudo_capture('eval', 'find', repo_path, '-type', 'f', '|', 'wc', '-l')
56+
sudo_capture(*cmd)
5157
rescue RedmineGitHosting::Error::GitoliteCommandException => e
5258
logger.error("Can't retrieve Git objects count : #{e.output}")
5359
0

Diff for: lib/redmine_git_hosting/commands/sudo.rb

+5-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,11 @@ def sudo_pipe_data(stdin)
168168
# Return the Sudo command with basic args.
169169
#
170170
def sudo
171-
['sudo', *sudo_shell_params]
171+
if RedmineGitHosting::Config.gitolite_use_sudo?
172+
['sudo', *sudo_shell_params]
173+
else
174+
[]
175+
end
172176
end
173177

174178

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

+5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ def redmine_user
1818
end
1919

2020

21+
def gitolite_use_sudo?
22+
redmine_user != gitolite_user
23+
end
24+
25+
2126
def gitolite_home_dir
2227
@gitolite_home_dir ||= Etc.getpwnam(gitolite_user).dir rescue nil
2328
end

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def temp_dir_writeable?(opts = {})
6666

6767
## SUDO TEST1
6868
def can_redmine_sudo_to_gitolite_user?
69-
return true if gitolite_user == redmine_user
69+
return true unless gitolite_use_sudo?
7070
file_logger.info("Testing if Redmine user '#{redmine_user}' can sudo to Gitolite user '#{gitolite_user}'...")
7171
result = execute_sudo_test(gitolite_user) do
7272
RedmineGitHosting::Commands.sudo_capture('whoami')

0 commit comments

Comments
 (0)