Añade plugin Redmine Git Hosting 4.0.2

This commit is contained in:
Manuel Cillero 2020-12-05 13:57:05 +01:00
parent 472cb1ea76
commit bdd66d941f
494 changed files with 36768 additions and 0 deletions

View file

@ -0,0 +1,53 @@
class SetMirrorRolePermissions < ActiveRecord::Migration[4.2]
def up
manager_role_name = I18n.t(:default_role_manager, locale: Setting.default_language)
say "Updating role : '#{manager_role_name}'..."
manager_role = Role.find_by(name: manager_role_name)
if !manager_role.nil?
manager_role.add_permission! :view_repository_mirrors
manager_role.add_permission! :create_repository_mirrors
manager_role.add_permission! :edit_repository_mirrors
manager_role.save
say 'Done !'
else
say "Role '#{manager_role_name}' not found, exit !"
end
developer_role_name = I18n.t(:default_role_developer, locale: Setting.default_language)
say "Updating role : '#{developer_role_name}'..."
developer_role = Role.find_by(name: developer_role_name)
if !developer_role.nil?
developer_role.add_permission! :view_repository_mirrors
developer_role.save
say 'Done !'
else
say "Role '#{developer_role_name}' not found, exit !"
end
end
def down
manager_role_name = I18n.t(:default_role_manager, locale: Setting.default_language)
say "Updating role : '#{manager_role_name}'..."
manager_role = Role.find_by(name: manager_role_name)
if !manager_role.nil?
manager_role.remove_permission! :view_repository_mirrors
manager_role.remove_permission! :create_repository_mirrors
manager_role.remove_permission! :edit_repository_mirrors
manager_role.save
say 'Done !'
else
say "Role '#{manager_role_name}' not found, exit !"
end
developer_role_name = I18n.t(:default_role_developer, locale: Setting.default_language)
say "Updating role : '#{developer_role_name}'..."
developer_role = Role.find_by(name: developer_role_name)
if !developer_role.nil?
developer_role.remove_permission! :view_repository_mirrors
developer_role.save
say 'Done !'
else
say "Role '#{developer_role_name}' not found, exit !"
end
end
end

View file

@ -0,0 +1,12 @@
class CreateGitolitePublicKeys < ActiveRecord::Migration[4.2]
def change
create_table :gitolite_public_keys do |t|
t.column :title, :string
t.column :identifier, :string
t.column :key, :text
t.column :active, :integer, default: 1
t.references :user
t.timestamps
end
end
end

View file

@ -0,0 +1,10 @@
class CreateGitCaches < ActiveRecord::Migration[4.2]
def change
create_table :git_caches do |t|
t.column :command, :text
t.column :command_output, :binary
t.column :proj_identifier, :string
t.timestamps
end
end
end

View file

@ -0,0 +1,14 @@
class ExtendChangesetsNotifiedCia < ActiveRecord::Migration[4.2]
def up
add_column :changesets, :notified_cia, :integer, default: 0
end
def down
# Deal with fact that one of next migrations doesn't restore :notified_cia
remove_column :changesets, :notified_cia if column_exists?(:changesets, :notified_cia)
end
def column_exists?(table_name, column_name)
columns(table_name).any? { |c| c.name == column_name.to_s }
end
end

View file

@ -0,0 +1,11 @@
class CreateRepositoryMirrors < ActiveRecord::Migration[4.2]
def change
create_table :repository_mirrors do |t|
t.column :project_id, :integer
t.column :active, :integer, default: 1
t.column :url, :string
t.references :project
t.timestamps
end
end
end

View file

@ -0,0 +1,29 @@
class CreateGitRepositoryExtras < ActiveRecord::Migration[4.2]
def up
drop_table :git_repository_extras if table_exists?(:git_repository_extras)
create_table :git_repository_extras do |t|
t.column :repository_id, :integer
t.column :git_daemon, :integer, default: 1
t.column :git_http, :integer, default: 1
t.column :notify_cia, :integer, default: 0
t.column :key, :string
end
drop_table :git_hook_keys if table_exists?('git_hook_keys')
remove_column :repositories, :git_daemon if column_exists?(:repositories, :git_daemon)
remove_column :repositories, :git_http if column_exists?(:repositories, :git_http)
end
def down
drop_table :git_repository_extras
end
def table_exists?(name)
ActiveRecord::Base.connection.tables.include?(name)
end
def column_exists?(table_name, column_name)
columns(table_name).any? { |c| c.name == column_name.to_s }
end
end

View file

@ -0,0 +1,30 @@
class MoveNotifiedCiaToGitCiaNotifications < ActiveRecord::Migration[4.2]
def up
drop_table :git_cia_notifications if table_exists?(:git_cia_notifications)
create_table :git_cia_notifications do |t|
t.column :repository_id, :integer
t.column :scmid, :string
end
# Speed up searches
add_index(:git_cia_notifications, :scmid)
# Make sure uniqueness of the two columns, :scmid, :repository_id
add_index(:git_cia_notifications, %i[scmid repository_id], unique: true)
remove_column :changesets, :notified_cia if column_exists?(:changesets, :notified_cia)
end
def down
drop_table :git_cia_notifications
end
def table_exists?(name)
ActiveRecord::Base.connection.tables.include?(name)
end
def column_exists?(table_name, column_name)
columns(table_name).any? { |c| c.name == column_name.to_s }
end
end

View file

@ -0,0 +1,5 @@
class AddIndexesToGitolitePublicKey < ActiveRecord::Migration[4.2]
def change
add_index :gitolite_public_keys, :identifier
end
end

View file

@ -0,0 +1,34 @@
class AddSettingsToPlugin < ActiveRecord::Migration[4.2]
def up
# Add some new settings to settings page, if they don't exist
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash['gitRecycleBasePath'] ||= 'recycle_bin/'
valuehash['gitRecycleExpireTime'] ||= '24.0'
valuehash['gitLockWaitTime'] ||= '10'
valuehash['httpServer'] ||= RedmineGitHosting::Config.my_root_url
if Setting.plugin_redmine_git_hosting != valuehash
Setting.plugin_redmine_git_hosting = valuehash
say 'Added redmine_git_hosting settings: gitRecycleBasePath, getRecycleExpireTime, getLockWaitTime, httpServer'
end
rescue => e
say e.message
end
def down
# Remove above settings from plugin page
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash.delete('gitRecycleBasePath')
valuehash.delete('gitRecycleExpireTime')
valuehash.delete('gitLockWaitTime')
valuehash.delete('gitLockWaitTime')
if Setting.plugin_redmine_git_hosting != valuehash
Setting.plugin_redmine_git_hosting = valuehash
say 'Removed redmine_git_hosting settings: gitRecycleBasePath, getRecycleExpireTime, getLockWaitTime, httpServer'
end
Setting.plugin_redmine_git_hosting = valuehash
rescue => e
say e.message
end
end

View file

@ -0,0 +1,47 @@
class AddSettingsToPlugin2 < ActiveRecord::Migration[4.2]
def up
# Add some new settings to settings page, if they don't exist
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash['httpServerSubdir'] ||= ''
valuehash['gitRedmineSubdir'] ||= ''
valuehash['gitRepositoryHierarchy'] ||= 'true'
# Fix httpServer by removing directory components
valuehash['httpServer'] = (valuehash['httpServer'][%r{^[^\/]*}])
if Setting.plugin_redmine_git_hosting != valuehash
say 'Added redmine_git_hosting settings: httpServerSubdir, gitRedmineSubdir, gitRepositoryHierarchy'
if Setting.plugin_redmine_git_hosting['httpServer'] != valuehash['httpServer']
say "Updated 'httpServer' from '#{Setting.plugin_redmine_git_hosting['httpServer']}' to '#{valuehash['httpServer']}'."
end
Setting.plugin_redmine_git_hosting = valuehash
end
rescue => e
say e.message
end
def down
# Remove above settings from plugin page
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash.delete('httpServerSubdir')
valuehash.delete('gitRedmineSubdir')
valuehash.delete('gitRepositoryHierarchy')
# Restore redmine root directory to httpServer (remove trailing '/')
valuehash['httpServer'] = RedmineGitHosting::Config.my_root_url
if Setting.plugin_redmine_git_hosting != valuehash
say 'Removed redmine_git_hosting settings: httpServerSubdir, gitRedmineSubdir, gitRepositoryHierarchy'
if Setting.plugin_redmine_git_hosting['httpServer'] != valuehash['httpServer']
say "Updated 'httpServer' from '#{Setting.plugin_redmine_git_hosting['httpServer']}' to '#{valuehash['httpServer']}'."
end
Setting.plugin_redmine_git_hosting = valuehash
end
rescue => e
say e.message
end
end

View file

@ -0,0 +1,40 @@
class AddSettingsToPlugin3 < ActiveRecord::Migration[4.2]
def up
# Add some new settings to settings page, if they don't exist
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash['gitDaemonDefault'] ||= '1'
valuehash['gitHttpDefault'] ||= '1'
valuehash['gitNotifyCIADefault'] ||= '0'
valuehash['gitTempDataDir'] ||= '/tmp/redmine_git_hosting/'
valuehash['gitScriptDir'] ||= ''
if Setting.plugin_redmine_git_hosting != valuehash
say 'Added redmine_git_hosting settings: gitDaemonDefault, gitHttpDefault, gitNotifyCIADefault, gitTempDataDir, gitScriptDir'
if Setting.plugin_redmine_git_hosting['httpServer'] != valuehash['httpServer']
say "Updated 'httpServer' from '#{Setting.plugin_redmine_git_hosting['httpServer']}' to '#{valuehash['httpServer']}'."
end
Setting.plugin_redmine_git_hosting = valuehash
end
rescue => e
say e.message
end
def down
# Remove above settings from plugin page
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash.delete('gitDaemonDefault')
valuehash.delete('gitHttpDefault')
valuehash.delete('gitNotifyDIADefault')
valuehash.delete('gitTempDataDir')
valuehash.delete('gitScriptDir')
if Setting.plugin_redmine_git_hosting != valuehash
say 'Removed redmine_git_hosting settings: gitDaemonDefault, gitHttpDefault, gitNotifyCIADefault, gitTempDataDir, gitScriptDir'
Setting.plugin_redmine_git_hosting = valuehash
end
rescue => e
say e.message
end
end

View file

@ -0,0 +1,11 @@
class CreateRepositoryPostReceiveUrls < ActiveRecord::Migration[4.2]
def change
create_table :repository_post_receive_urls do |t|
t.column :project_id, :integer
t.column :active, :integer, default: 1
t.column :url, :string
t.references :project
t.timestamps
end
end
end

View file

@ -0,0 +1,53 @@
class SetPostReceiveUrlRolePermissions < ActiveRecord::Migration[4.2]
def up
manager_role_name = I18n.t(:default_role_manager, locale: Setting.default_language)
say "Updating role : '#{manager_role_name}'..."
manager_role = Role.find_by(name: manager_role_name)
if !manager_role.nil?
manager_role.add_permission! :view_repository_post_receive_urls
manager_role.add_permission! :create_repository_post_receive_urls
manager_role.add_permission! :edit_repository_post_receive_urls
manager_role.save
say 'Done !'
else
say "Role '#{manager_role_name}' not found, exit !"
end
developer_role_name = I18n.t(:default_role_developer, locale: Setting.default_language)
say "Updating role : '#{developer_role_name}'..."
developer_role = Role.find_by(name: developer_role_name)
if !developer_role.nil?
developer_role.add_permission! :view_repository_post_receive_urls
developer_role.save
say 'Done !'
else
say "Role '#{developer_role_name}' not found, exit !"
end
end
def down
manager_role_name = I18n.t(:default_role_manager, locale: Setting.default_language)
say "Updating role : '#{manager_role_name}'..."
manager_role = Role.find_by(name: manager_role_name)
if !manager_role.nil?
manager_role.remove_permission! :view_repository_post_receive_urls
manager_role.remove_permission! :create_repository_post_receive_urls
manager_role.remove_permission! :edit_repository_post_receive_urls
manager_role.save
say 'Done !'
else
say "Role '#{manager_role_name}' not found, exit !"
end
developer_role_name = I18n.t(:default_role_developer, locale: Setting.default_language)
say "Updating role : '#{developer_role_name}'..."
developer_role = Role.find_by(name: developer_role_name)
if !developer_role.nil?
developer_role.remove_permission! :view_repository_post_receive_urls
developer_role.save
say 'Done !'
else
say "Role '#{developer_role_name}' not found, exit !"
end
end
end

View file

@ -0,0 +1,5 @@
class AddPostReceiveUrlModes < ActiveRecord::Migration[4.2]
def change
add_column :repository_post_receive_urls, :mode, :string, default: 'github'
end
end

View file

@ -0,0 +1,27 @@
class AddSettingsToPlugin4 < ActiveRecord::Migration[4.2]
def up
# Add some new settings to settings page, if they don't exist
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash['gitForceHooksUpdate'] ||= 'true'
if Setting.plugin_redmine_git_hosting != valuehash
say 'Added redmine_git_hosting settings: gitForceHooksUpdate'
Setting.plugin_redmine_git_hosting = valuehash
end
rescue => e
say e.message
end
def down
# Remove above settings from plugin page
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash.delete('gitForceHooksUpdate')
if Setting.plugin_redmine_git_hosting != valuehash
say 'Removed redmine_git_hosting settings: gitForceHooksUpdate'
Setting.plugin_redmine_git_hosting = valuehash
end
rescue => e
say e.message
end
end

View file

@ -0,0 +1,8 @@
class AddRepositoryMirrorFields < ActiveRecord::Migration[4.2]
def change
add_column :repository_mirrors, :push_mode, :integer, default: 0
add_column :repository_mirrors, :include_all_branches, :boolean, default: false
add_column :repository_mirrors, :include_all_tags, :boolean, default: false
add_column :repository_mirrors, :explicit_refspec, :string, default: ''
end
end

View file

@ -0,0 +1,29 @@
class AddSettingsToPlugin5 < ActiveRecord::Migration[4.2]
def up
# Add some new settings to settings page, if they don't exist
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash['gitConfigFile'] ||= 'gitolite.conf'
valuehash['gitConfigHasAdminKey'] ||= 'true'
if Setting.plugin_redmine_git_hosting != valuehash
say 'Added redmine_git_hosting settings: gitConfigFile, gitConfigHasAdminKey'
Setting.plugin_redmine_git_hosting = valuehash
end
rescue => e
say e.message
end
def down
# Remove above settings from plugin page
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash.delete('gitConfigFile')
valuehash.delete('gitConfigHasAdminKey')
if Setting.plugin_redmine_git_hosting != valuehash
say 'Removed redmine_git_hosting settings: gitConfigFile, gitConfigHasAdminKey'
Setting.plugin_redmine_git_hosting = valuehash
end
rescue => e
say e.message
end
end

View file

@ -0,0 +1,72 @@
class CreateDeploymentCredentials < ActiveRecord::Migration[4.2]
def up
create_table :deployment_credentials do |t|
t.references :repository
t.references :gitolite_public_key
t.references :user
t.column :active, :integer, default: 1
t.column :perm, :string, null: false
end
add_index :deployment_credentials, :repository_id
add_index :deployment_credentials, :gitolite_public_key_id
add_column :gitolite_public_keys, :key_type, :integer, default: GitolitePublicKey::KEY_TYPE_USER
add_column :gitolite_public_keys, :delete_when_unused, :boolean, default: true
manager_role_name = I18n.t(:default_role_manager, locale: Setting.default_language)
say "Updating role : '#{manager_role_name}'..."
manager_role = Role.find_by(name: manager_role_name)
if !manager_role.nil?
manager_role.add_permission! :view_repository_deployment_credentials
manager_role.add_permission! :create_repository_deployment_credentials
manager_role.add_permission! :edit_repository_deployment_credentials
manager_role.save
say 'Done !'
else
say "Role '#{manager_role_name}' not found, exit !"
end
developer_role_name = I18n.t(:default_role_developer, locale: Setting.default_language)
say "Updating role : '#{developer_role_name}'..."
developer_role = Role.find_by(name: developer_role_name)
if !developer_role.nil?
developer_role.add_permission! :view_repository_deployment_credentials
developer_role.save
say 'Done !'
else
say "Role '#{developer_role_name}' not found, exit !"
end
end
def down
drop_table :deployment_credentials
remove_column :gitolite_public_keys, :key_type
remove_column :gitolite_public_keys, :delete_when_unused
manager_role_name = I18n.t(:default_role_manager, locale: Setting.default_language)
say "Updating role : '#{manager_role_name}'..."
manager_role = Role.find_by(name: manager_role_name)
if !manager_role.nil?
manager_role.remove_permission! :view_repository_deployment_credentials
manager_role.remove_permission! :create_repository_deployment_credentials
manager_role.remove_permission! :edit_repository_deployment_credentials
manager_role.save
say 'Done !'
else
say "Role '#{manager_role_name}' not found, exit !"
end
developer_role_name = I18n.t(:default_role_developer, locale: Setting.default_language)
say "Updating role : '#{developer_role_name}'..."
developer_role = Role.find_by(name: developer_role_name)
if !developer_role.nil?
developer_role.remove_permission! :view_repository_deployment_credentials
developer_role.save
say 'Done !'
else
say "Role '#{developer_role_name}' not found, exit !"
end
end
end

View file

@ -0,0 +1,126 @@
class UpdateMultiRepoPerProject < ActiveRecord::Migration[4.2]
def up
unless columns('repository_mirrors').index { |x| x.name == 'repository_id' }
add_column :repository_mirrors, :repository_id, :integer
begin
say 'Detaching repository mirrors from projects; attaching them to repositories...'
RepositoryMirror.all.each do |mirror|
mirror.repository_id = Project.find(mirror.project_id).repository.id
mirror.save!
end
say "Success. Changed #{RepositoryMirror.all.count} records."
rescue => e
say 'Failed to attach repository mirrors to repositories.'
say "Error: #{e.message}"
end
remove_column :repository_mirrors, :project_id if columns('repository_mirrors').index { |x| x.name == 'project_id' }
end
unless columns('repository_post_receive_urls').index { |x| x.name == 'repository_id' }
add_column :repository_post_receive_urls, :repository_id, :integer
begin
say 'Detaching repository post-receive-urls from projects; attaching them to repositories...'
RepositoryPostReceiveUrl.all.each do |prurl|
prurl.repository_id = Project.find(prurl.project_id).repository.id
prurl.save!
end
say "Success. Changed #{RepositoryPostReceiveUrl.all.count} records."
rescue => e
say 'Failed to attach repositories post-receive-urls to repositories.'
say "Error: #{e.message}"
end
if columns('repository_post_receive_urls').index { |x| x.name == 'project_id' }
remove_column :repository_post_receive_urls, :project_id
end
end
add_index :projects, [:identifier]
if columns('repositories').index { |x| x.name == 'identifier' }
add_index :repositories, [:identifier]
add_index :repositories, %i[identifier project_id]
end
rename_column :git_caches, :proj_identifier, :repo_identifier
begin
# Add some new settings to settings page, if they don't exist
valuehash = Setting.plugin_redmine_git_hosting.clone
if (Repository.all.map(&:identifier).inject(Hash.new(0) do |h, x|
h[x] += 1 if x.present?
h
end.values.max) || 0) > 1
# Oops -- have duplication. Force to false.
valuehash['gitRepositoryIdentUnique'] = 'false'
else
# If no duplication -- set to true only if it doesn't already exist
valuehash['gitRepositoryIdentUnique'] ||= 'true'
end
if Setting.plugin_redmine_git_hosting != valuehash
say "Added redmine_git_hosting settings: 'gitRepositoryIdentUnique' => #{valuehash['gitRepositoryIdentUnique']}"
Setting.plugin_redmine_git_hosting = valuehash
end
rescue => e
say "Error: #{e.message}"
end
end
def down
unless columns('repository_mirrors').index { |x| x.name == 'project_id' }
add_column :repository_mirrors, :project_id, :integer
begin
say 'Detaching repository mirrors from repositories; re-attaching them to projects...'
RepositoryMirror.all.each do |mirror|
mirror.project_id = Repository.find(mirror.repository_id).project.id
mirror.save!
end
say "Success. Changed #{RepositoryMirror.all.count} records."
rescue => e
say 'Failed to re-attach repository mirrors to projects.'
say "Error: #{e.message}"
end
remove_column :repository_mirrors, :repository_id if columns('repository_mirrors').index { |x| x.name == 'repository_id' }
end
unless columns('repository_post_receive_urls').index { |x| x.name == 'project_id' }
add_column :repository_post_receive_urls, :project_id, :integer
begin
say 'Detaching repository post-receive-urls from repositories; re-attaching them to projects...'
RepositoryPostReceiveUrl.all.each do |prurl|
prurl.project_id = Repository.find(prurl.repository_id).project.id
prurl.save!
end
say "Success. Changed #{RepositoryPostReceiveUrl.all.count} records."
rescue => e
say 'Failed to re-attach repository post-receive urls to projects.'
say "Error: #{e.message}"
end
if columns('repository_post_receive_urls').index { |x| x.name == 'repository_id' }
remove_column :repository_post_receive_urls, :repository_id
end
end
remove_index :projects, [:identifier]
if columns('repositories').index { |x| x.name == 'identifier' }
remove_index :repositories, [:identifier]
remove_index :repositories, %i[identifier project_id]
end
rename_column :git_caches, :repo_identifier, :proj_identifier
begin
# Remove above settings from plugin page
valuehash = Setting.plugin_redmine_git_hosting.clone
valuehash.delete('gitRepositoryIdentUnique')
if Setting.plugin_redmine_git_hosting != valuehash
say 'Removed redmine_git_hosting settings: gitRepositoryIdentUnique'
Setting.plugin_redmine_git_hosting = valuehash
end
rescue => e
say "Error: #{e.message}"
end
end
end

View file

@ -0,0 +1,181 @@
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

View file

@ -0,0 +1,9 @@
class CreateRepositoryGitNotifications < ActiveRecord::Migration[4.2]
def change
create_table :repository_git_notifications do |t|
t.column :repository_id, :integer
t.column :include_list, :text
t.column :exclude_list, :text
end
end
end

View file

@ -0,0 +1,5 @@
class RenameTableGitRepositoryExtras < ActiveRecord::Migration[4.2]
def change
rename_table :git_repository_extras, :repository_git_extras
end
end

View file

@ -0,0 +1,11 @@
class RenameTableDeploymentCredentials < ActiveRecord::Migration[4.2]
def up
remove_index :deployment_credentials, :gitolite_public_key_id
rename_table :deployment_credentials, :repository_deployment_credentials
end
def down
rename_table :repository_deployment_credentials, :deployment_credentials
add_index :deployment_credentials, :gitolite_public_key_id
end
end

View file

@ -0,0 +1,11 @@
class AddColumnsToRepositoryGitExtra < ActiveRecord::Migration[4.2]
def up
return if RepositoryGitExtra.column_names.include? 'git_notify'
add_column :repository_git_extras, :git_notify, :integer, default: 0, after: :git_http
end
def down
remove_column :repository_git_extras, :git_notify
end
end

View file

@ -0,0 +1,6 @@
class AddColumnsToRepositoryGitNotification < ActiveRecord::Migration[4.2]
def change
add_column :repository_git_notifications, :prefix, :string
add_column :repository_git_notifications, :sender_address, :string
end
end

View file

@ -0,0 +1,13 @@
class RemoveNotifyCia < ActiveRecord::Migration[4.2]
def up
drop_table :git_cia_notifications
remove_column :repository_git_extras, :notify_cia
end
def down
create_table :git_cia_notifications do |t|
t.column :repository_id, :integer
t.column :scmid, :string
end
end
end

View file

@ -0,0 +1,16 @@
class AddDefaultBranchToRepositoryGitExtra < ActiveRecord::Migration[4.2]
def up
add_column :repository_git_extras, :default_branch, :string, after: :git_notify
RepositoryGitExtra.reset_column_information
RepositoryGitExtra.all.each do |extra|
extra.update_attribute(:default_branch, 'master')
end
change_column :repository_git_extras, :default_branch, :string, null: false
end
def down
remove_column :repository_git_extras, :default_branch
end
end

View file

@ -0,0 +1,9 @@
class CreateRepositoryGitConfigKeys < ActiveRecord::Migration[4.2]
def change
create_table :repository_git_config_keys do |t|
t.column :repository_id, :integer
t.column :key, :string
t.column :value, :string
end
end
end

View file

@ -0,0 +1,8 @@
class CreateGithubIssues < ActiveRecord::Migration[4.2]
def change
create_table :github_issues do |t|
t.column :github_id, :integer, null: false
t.column :issue_id, :integer, null: false
end
end
end

View file

@ -0,0 +1,8 @@
class CreateGithubComments < ActiveRecord::Migration[4.2]
def change
create_table :github_comments do |t|
t.column :github_id, :integer, null: false
t.column :journal_id, :integer, null: false
end
end
end

View file

@ -0,0 +1,16 @@
class EnforceModelsConstraints < ActiveRecord::Migration[4.2]
def up
change_column :git_caches, :command_output, :binary, limit: 16_777_216
remove_column :repository_mirrors, :created_at
remove_column :repository_mirrors, :updated_at
remove_column :repository_post_receive_urls, :created_at
remove_column :repository_post_receive_urls, :updated_at
end
def down
add_column :repository_mirrors, :created_at, :datetime
add_column :repository_mirrors, :updated_at, :datetime
add_column :repository_post_receive_urls, :created_at, :datetime
add_column :repository_post_receive_urls, :updated_at, :datetime
end
end

View file

@ -0,0 +1,78 @@
class ConvertBoolean < ActiveRecord::Migration[4.2]
def up
## GitolitePublicKey
add_column :gitolite_public_keys, :active_temp, :boolean, default: true, after: :key
GitolitePublicKey.reset_column_information
GitolitePublicKey.all.each do |p|
active_temp = p.active == 1
say 'Update!'
p.update_column(:active_temp, active_temp)
end
remove_column :gitolite_public_keys, :active
rename_column :gitolite_public_keys, :active_temp, :active
add_column :gitolite_public_keys, :delete_when_unused_temp, :boolean, default: true, after: :active
GitolitePublicKey.reset_column_information
GitolitePublicKey.all.each do |p|
delete_when_unused_temp = p.delete_when_unused == 1
say 'Update!'
p.update_column(:delete_when_unused_temp, delete_when_unused_temp)
end
remove_column :gitolite_public_keys, :delete_when_unused
rename_column :gitolite_public_keys, :delete_when_unused_temp, :delete_when_unused
## RepositoryGitExtra
add_column :repository_git_extras, :git_daemon_temp, :boolean, default: true, after: :git_daemon
RepositoryGitExtra.reset_column_information
RepositoryGitExtra.all.each do |p|
git_daemon_temp = p.git_daemon == 1
say 'Update!'
p.update_column(:git_daemon_temp, git_daemon_temp)
end
remove_column :repository_git_extras, :git_daemon
rename_column :repository_git_extras, :git_daemon_temp, :git_daemon
add_column :repository_git_extras, :git_notify_temp, :boolean, default: true, after: :git_notify
RepositoryGitExtra.reset_column_information
RepositoryGitExtra.all.each do |p|
git_notify_temp = p.git_notify == 1
say 'Update!'
p.update_column(:git_notify_temp, git_notify_temp)
end
remove_column :repository_git_extras, :git_notify
rename_column :repository_git_extras, :git_notify_temp, :git_notify
## RepositoryDeploymentCredential
add_column :repository_deployment_credentials, :active_temp, :boolean, default: true, after: :active
RepositoryDeploymentCredential.reset_column_information
RepositoryDeploymentCredential.all.each do |p|
active_temp = p.active == 1
say 'Update!'
p.update_column(:active_temp, active_temp)
end
remove_column :repository_deployment_credentials, :active
rename_column :repository_deployment_credentials, :active_temp, :active
## RepositoryMirror
add_column :repository_mirrors, :active_temp, :boolean, default: true, after: :active
RepositoryMirror.reset_column_information
RepositoryMirror.all.each do |p|
active_temp = p.active == 1
say 'Update!'
p.update_column(:active_temp, active_temp)
end
remove_column :repository_mirrors, :active
rename_column :repository_mirrors, :active_temp, :active
## RepositoryPostReceiveUrl
add_column :repository_post_receive_urls, :active_temp, :boolean, default: true, after: :active
RepositoryPostReceiveUrl.reset_column_information
RepositoryPostReceiveUrl.all.each do |p|
active_temp = p.active == 1
say 'Update!'
p.update_column(:active_temp, active_temp)
end
remove_column :repository_post_receive_urls, :active
rename_column :repository_post_receive_urls, :active_temp, :active
end
end

View file

@ -0,0 +1,6 @@
class AddTriggerToPostReceive < ActiveRecord::Migration[4.2]
def change
add_column :repository_post_receive_urls, :use_triggers, :boolean, default: false
add_column :repository_post_receive_urls, :triggers, :text
end
end

View file

@ -0,0 +1,5 @@
class AddSplitPayloadsToPostReceive < ActiveRecord::Migration[4.2]
def change
add_column :repository_post_receive_urls, :split_payloads, :boolean, default: false
end
end

View file

@ -0,0 +1,5 @@
class AddFingerprintToGitolitePublicKeys < ActiveRecord::Migration[4.2]
def change
add_column :gitolite_public_keys, :fingerprint, :string, after: 'key'
end
end

View file

@ -0,0 +1,48 @@
class CreateUniqueIndexes < ActiveRecord::Migration[4.2]
def up
add_index :repository_git_extras, :repository_id, unique: true
add_index :repository_git_notifications, :repository_id, unique: true
add_index :repository_git_config_keys, :repository_id
add_index :repository_git_config_keys, %i[key repository_id], unique: true
add_index :repository_post_receive_urls, :repository_id
add_index :repository_post_receive_urls, %i[url repository_id], unique: true
add_index :repository_mirrors, :repository_id
add_index :repository_mirrors, %i[url repository_id], unique: true
add_index :repository_deployment_credentials,
%i[repository_id gitolite_public_key_id],
unique: true,
name: 'index_deployment_credentials_on_repo_id_and_public_key_id'
add_index :gitolite_public_keys, %i[title user_id], unique: true
add_index :github_comments, %i[github_id journal_id], unique: true
add_index :github_issues, %i[github_id issue_id], unique: true
end
def down
remove_index :repository_git_extras, :repository_id
remove_index :repository_git_notifications, :repository_id
remove_index :repository_git_config_keys, :repository_id
remove_index :repository_git_config_keys, %i[key repository_id]
remove_index :repository_post_receive_urls, :repository_id
remove_index :repository_post_receive_urls, %i[url repository_id]
remove_index :repository_mirrors, :repository_id
remove_index :repository_mirrors, %i[url repository_id]
remove_index :repository_deployment_credentials,
name: 'index_deployment_credentials_on_repo_id_and_public_key_id'
remove_index :gitolite_public_keys, %i[title user_id]
remove_index :github_comments, %i[github_id journal_id]
remove_index :github_issues, %i[github_id issue_id]
end
end

View file

@ -0,0 +1,13 @@
class CreateRepositoryProtectedBranches < ActiveRecord::Migration[4.2]
def change
create_table :repository_protected_branches do |t|
t.column :repository_id, :integer
t.column :path, :string
t.column :permissions, :string
t.column :user_list, :text
t.column :position, :integer
end
add_index :repository_protected_branches, :repository_id
end
end

View file

@ -0,0 +1,5 @@
class AddProtectedBranchToRepositoryGitExtra < ActiveRecord::Migration[4.2]
def change
add_column :repository_git_extras, :protected_branch, :boolean, default: false, after: :default_branch
end
end

View file

@ -0,0 +1,9 @@
class RemoveGitolitePublicKeysActiveColumn < ActiveRecord::Migration[4.2]
def up
remove_column :gitolite_public_keys, :active
end
def down
add_column :gitolite_public_keys, :active, :boolean, default: true, after: :fingerprint
end
end

View file

@ -0,0 +1,5 @@
class AddGitAnnexToGitExtras < ActiveRecord::Migration[4.2]
def change
add_column :repository_git_extras, :git_annex, :boolean, default: false, after: :git_notify
end
end

View file

@ -0,0 +1,5 @@
class AddPublicRepoToRepositoryGitExtra < ActiveRecord::Migration[4.2]
def change
add_column :repository_git_extras, :public_repo, :boolean, default: false, after: :protected_branch
end
end

View file

@ -0,0 +1,5 @@
class AddUrlsOrderToRepositoryGitExtra < ActiveRecord::Migration[4.2]
def change
add_column :repository_git_extras, :urls_order, :text
end
end

View file

@ -0,0 +1,5 @@
class AddUniqueIndexToFingerprint < ActiveRecord::Migration[4.2]
def change
add_index :gitolite_public_keys, :fingerprint, unique: true
end
end

View file

@ -0,0 +1,5 @@
class AddTypeFieldToGitConfigKeys < ActiveRecord::Migration[4.2]
def change
add_column :repository_git_config_keys, :type, :string
end
end

View file

@ -0,0 +1,11 @@
class RenameGitConfigKeysIndex < ActiveRecord::Migration[4.2]
def up
remove_index :repository_git_config_keys, %i[key repository_id]
add_index :repository_git_config_keys, %i[key type repository_id], unique: true, name: :unique_key_name
end
def down
remove_index :repository_git_config_keys, name: :unique_key_name
add_index :repository_git_config_keys, %i[key repository_id], unique: true
end
end

View file

@ -0,0 +1,14 @@
class CreateProtectedBranchesMembers < ActiveRecord::Migration[4.2]
def change
create_table :protected_branches_members do |t|
t.column :protected_branch_id, :integer
t.column :principal_id, :integer
t.column :inherited_by, :integer
end
add_index :protected_branches_members,
%i[protected_branch_id principal_id inherited_by],
unique: true,
name: 'unique_protected_branch_member'
end
end

View file

@ -0,0 +1,23 @@
class RepositoryProtectedBrancheWrapped < RepositoryProtectedBranche
serialize :user_list, Array
end
class MigrateProtectedBranchesUsers < ActiveRecord::Migration[4.2]
def up
RepositoryProtectedBrancheWrapped.all.each do |protected_branch|
users = protected_branch.user_list.map { |u| User.find_by(login: u) }.compact.uniq
manager = RepositoryProtectedBranches::MemberManager.new(protected_branch)
manager.add_users(users.map(&:id))
end
remove_column :repository_protected_branches, :user_list
end
def down
add_column :repository_protected_branches, :user_list, :text, after: :permissions
RepositoryProtectedBrancheWrapped.all.each do |protected_branch|
users = protected_branch.users.map(&:login).compact.uniq
protected_branch.user_list = users
protected_branch.save!
end
end
end

View file

@ -0,0 +1,22 @@
class ShrinkGitNotifications < ActiveRecord::Migration[4.2]
def up
add_column :repository_git_extras, :notification_sender, :string
add_column :repository_git_extras, :notification_prefix, :string
drop_table :repository_git_notifications
end
def down
remove_column :repository_git_extras, :notification_sender
remove_column :repository_git_extras, :notification_prefix
create_table :repository_git_notifications do |t|
t.integer :repository_id
t.text :include_list
t.text :exclude_list
t.string :prefix
t.string :sender_address
end
add_index :repository_git_notifications, :repository_id, unique: true
end
end

View file

@ -0,0 +1,49 @@
class SplitSmartHttp < ActiveRecord::Migration[4.2]
def up
add_column :repository_git_extras, :git_https, :boolean, default: false, after: :git_http
add_column :repository_git_extras, :git_ssh, :boolean, default: true, after: :git_https
add_column :repository_git_extras, :git_go, :boolean, default: false, after: :git_https
add_column :repository_git_extras, :git_http_temp, :boolean, default: false, after: :git_http
RepositoryGitExtra.reset_column_information
RepositoryGitExtra.all.each do |git_extra|
case git_extra[:git_http]
when 1 # HTTPS only
git_extra.update_column(:git_https, true)
when 2 # HTTPS and HTTP
git_extra.update_column(:git_https, true)
git_extra.update_column(:git_http_temp, true)
else # HTTP only
git_extra.update_column(:git_http_temp, true)
end
end
remove_column :repository_git_extras, :git_http
rename_column :repository_git_extras, :git_http_temp, :git_http
end
def down
add_column :repository_git_extras, :git_http_temp, :integer, after: :git_http
RepositoryGitExtra.reset_column_information
RepositoryGitExtra.all.each do |git_extra|
if git_extra[:git_https] && git_extra[:git_http]
git_extra.update_column(:git_http_temp, 2)
elsif git_extra[:git_https]
git_extra.update_column(:git_http_temp, 1)
elsif git_extra[:git_http]
git_extra.update_column(:git_http_temp, 3)
end
end
remove_column :repository_git_extras, :git_https
remove_column :repository_git_extras, :git_ssh
remove_column :repository_git_extras, :git_go
remove_column :repository_git_extras, :git_http
rename_column :repository_git_extras, :git_http_temp, :git_http
end
end