181 lines
5.7 KiB
Ruby
181 lines
5.7 KiB
Ruby
class MigrateParameters < ActiveRecord::Migration[4.2]
|
|
def up
|
|
## Prepare default values in case we install Redmine from scratch
|
|
new_setting = {
|
|
# Legacy settings
|
|
gitolite_user: 'git',
|
|
gitolite_server_port: '22',
|
|
gitolite_ssh_private_key: Rails.root.join('plugins/redmine_git_hosting/ssh_keys/redmine_gitolite_admin_id_rsa').to_s,
|
|
gitolite_ssh_public_key: Rails.root.join('plugins/redmine_git_hosting/ssh_keys/redmine_gitolite_admin_id_rsa.pub').to_s,
|
|
|
|
gitolite_global_storage_dir: 'repositories/',
|
|
gitolite_redmine_storage_dir: '',
|
|
gitolite_recycle_bin_dir: 'recycle_bin/',
|
|
|
|
gitolite_temp_dir: Rails.root.join('tmp/redmine_git_hosting').to_s,
|
|
gitolite_scripts_dir: './',
|
|
gitolite_timeout: '10',
|
|
gitolite_config_file: 'gitolite.conf',
|
|
gitolite_recycle_bin_expiration_time: '24.0',
|
|
|
|
gitolite_overwrite_existing_hooks: 'true',
|
|
gitolite_hooks_are_asynchronous: 'false',
|
|
gitolite_hooks_debug: 'false',
|
|
|
|
gitolite_cache_max_time: '86400',
|
|
gitolite_cache_max_size: '16',
|
|
gitolite_cache_max_elements: '2000',
|
|
|
|
ssh_server_domain: 'localhost',
|
|
http_server_domain: 'localhost',
|
|
https_server_domain: '',
|
|
http_server_subdir: '',
|
|
show_repositories_url: 'true',
|
|
|
|
gitolite_daemon_by_default: 'false',
|
|
gitolite_http_by_default: '1',
|
|
|
|
all_projects_use_git: 'false',
|
|
delete_git_repositories: 'true',
|
|
hierarchical_organisation: 'true',
|
|
unique_repo_identifier: 'false',
|
|
|
|
# New features settings
|
|
gitolite_log_level: 'info',
|
|
|
|
gitolite_server_host: '127.0.0.1',
|
|
|
|
git_config_username: 'Redmine Git Hosting',
|
|
git_config_email: 'redmine@example.net',
|
|
|
|
gitolite_use_sidekiq: 'false',
|
|
init_repositories_on_create: 'false',
|
|
download_revision_enabled: 'true',
|
|
gitolite_identifier_prefix: 'redmine_',
|
|
gitolite_identifier_strip_user_id: 'false',
|
|
|
|
gitolite_resync_all: 'false',
|
|
|
|
gitolite_notify_by_default: 'false',
|
|
gitolite_notify_global_prefix: '[REDMINE]',
|
|
gitolite_notify_global_sender_address: 'redmine@example.net',
|
|
gitolite_notify_global_include: [],
|
|
gitolite_notify_global_exclude: []
|
|
}
|
|
|
|
## Grab current values and update existing settings
|
|
Setting.plugin_redmine_git_hosting&.each do |key, value|
|
|
case key
|
|
# Gitolite SSH Config
|
|
when 'gitUser' then
|
|
new_setting[:gitolite_user] = value
|
|
|
|
when 'sshServerLocalPort' then
|
|
new_setting[:gitolite_server_port] = value
|
|
|
|
when 'gitoliteIdentityFile' then
|
|
new_setting[:gitolite_ssh_private_key] = value
|
|
|
|
when 'gitoliteIdentityPublicKeyFile' then
|
|
new_setting[:gitolite_ssh_public_key] = value
|
|
|
|
# Gitolite Storage Config
|
|
when 'gitRepositoryBasePath' then
|
|
new_setting[:gitolite_global_storage_dir] = value
|
|
|
|
when 'gitRedmineSubdir' then
|
|
new_setting[:gitolite_redmine_storage_dir] = value
|
|
|
|
when 'gitRecycleBasePath' then
|
|
new_setting[:gitolite_recycle_bin_dir] = value
|
|
|
|
# Gitolite Global Config
|
|
when 'gitTempDataDir' then
|
|
new_setting[:gitolite_temp_dir] = value
|
|
|
|
when 'gitScriptDir' then
|
|
new_setting[:gitolite_scripts_dir] = value
|
|
|
|
when 'gitConfigFile' then
|
|
new_setting[:gitolite_config_file] = value
|
|
|
|
when 'gitRecycleExpireTime' then
|
|
new_setting[:gitolite_recycle_bin_expiration_time] = value
|
|
|
|
when 'gitLockWaitTime' then
|
|
new_setting[:gitolite_timeout] = value
|
|
|
|
# Gitolite Hooks Config
|
|
when 'gitHooksAreAsynchronous' then
|
|
new_setting[:gitolite_hooks_are_asynchronous] = value
|
|
|
|
when 'gitForceHooksUpdate' then
|
|
new_setting[:gitolite_overwrite_existing_hooks] = value
|
|
|
|
when 'gitHooksDebug' then
|
|
new_setting[:gitolite_hooks_debug] = value
|
|
|
|
# Gitolite Cache Config
|
|
when 'gitCacheMaxTime' then
|
|
new_setting[:gitolite_cache_max_time] = value
|
|
|
|
when 'gitCacheMaxSize' then
|
|
new_setting[:gitolite_cache_max_size] = value
|
|
|
|
when 'gitCacheMaxElements' then
|
|
new_setting[:gitolite_cache_max_elements] = value
|
|
|
|
# Gitolite Access Config
|
|
when 'gitServer' then
|
|
new_setting[:ssh_server_domain] = value
|
|
|
|
when 'httpServer' then
|
|
new_setting[:http_server_domain] = value
|
|
new_setting[:https_server_domain] = value
|
|
|
|
when 'httpServerSubdir' then
|
|
new_setting[:http_server_subdir] = value
|
|
|
|
when 'gitRepositoriesShowUrl' then
|
|
new_setting[:show_repositories_url] = value
|
|
|
|
when 'gitDaemonDefault' then
|
|
new_setting[:gitolite_daemon_by_default] = if value == 1
|
|
'true'
|
|
else
|
|
'false'
|
|
end
|
|
|
|
when 'gitHttpDefault' then
|
|
new_setting[:gitolite_http_by_default] = value
|
|
|
|
# Redmine Config
|
|
when 'allProjectsUseGit' then
|
|
new_setting[:all_projects_use_git] = value
|
|
|
|
when 'deleteGitRepositories' then
|
|
new_setting[:delete_git_repositories] = value
|
|
|
|
when 'gitRepositoryHierarchy' then
|
|
if Additionals.true? value
|
|
new_setting[:hierarchical_organisation] = 'true'
|
|
new_setting[:unique_repo_identifier] = 'false'
|
|
else
|
|
new_setting[:hierarchical_organisation] = 'false'
|
|
new_setting[:unique_repo_identifier] = 'true'
|
|
end
|
|
end
|
|
end
|
|
|
|
say 'Applying configuration update ...'
|
|
say YAML.dump(new_setting)
|
|
|
|
begin
|
|
Setting.plugin_redmine_git_hosting = new_setting
|
|
rescue => e
|
|
say "Error : #{e.message}"
|
|
else
|
|
say 'Done!'
|
|
end
|
|
end
|
|
end
|