85 lines
2.3 KiB
Ruby
85 lines
2.3 KiB
Ruby
module Gitolitable
|
|
module Config
|
|
extend ActiveSupport::Concern
|
|
|
|
def git_config
|
|
repo_conf = {}
|
|
|
|
# This is needed for all Redmine repositories
|
|
repo_conf['redminegitolite.projectid'] = project.identifier.to_s
|
|
repo_conf['redminegitolite.repositoryid'] = identifier || ''
|
|
repo_conf['redminegitolite.repositorykey'] = gitolite_hook_key
|
|
|
|
if project.active?
|
|
repo_conf['http.uploadpack'] = clonable_via_http?.to_s
|
|
repo_conf['http.receivepack'] = pushable_via_http?.to_s
|
|
|
|
if git_notification_available?
|
|
repo_conf['multimailhook.enabled'] = 'true'
|
|
repo_conf['multimailhook.mailinglist'] = mailing_list.join(', ')
|
|
repo_conf['multimailhook.from'] = sender_address
|
|
repo_conf['multimailhook.emailPrefix'] = email_prefix
|
|
else
|
|
repo_conf['multimailhook.enabled'] = 'false'
|
|
end
|
|
|
|
git_config_keys.each do |git|
|
|
repo_conf[git.key] = git.value
|
|
end if git_config_keys.any?
|
|
|
|
else
|
|
# Disable repository
|
|
repo_conf['http.uploadpack'] = 'false'
|
|
repo_conf['http.receivepack'] = 'false'
|
|
repo_conf['multimailhook.enabled'] = 'false'
|
|
end
|
|
|
|
repo_conf
|
|
end
|
|
|
|
|
|
def gitolite_options
|
|
repo_conf = {}
|
|
|
|
git_option_keys.each do |option|
|
|
repo_conf[option.key] = option.value
|
|
end if git_option_keys.any?
|
|
|
|
repo_conf
|
|
end
|
|
|
|
|
|
def owner
|
|
{ name: Setting['app_title'], email: Setting['mail_from'] }
|
|
end
|
|
|
|
|
|
def github_payload
|
|
{
|
|
repository: {
|
|
owner: owner,
|
|
description: project.description,
|
|
fork: false,
|
|
forks: 0,
|
|
homepage: project.homepage,
|
|
name: redmine_name,
|
|
open_issues: project.issues.open.length,
|
|
watchers: 0,
|
|
private: !project.is_public,
|
|
url: repository_url
|
|
},
|
|
pusher: owner,
|
|
}
|
|
end
|
|
|
|
|
|
def repository_url
|
|
Rails.application.routes.url_helpers.url_for(
|
|
controller: 'repositories', action: 'show',
|
|
id: project, repository_id: identifier_param,
|
|
only_path: false, host: Setting['host_name'], protocol: Setting['protocol']
|
|
)
|
|
end
|
|
|
|
end
|
|
end
|