suitepro/plugins/redmine_git_hosting/db/migrate/20130807223227_migrate_parameters.rb

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