Añade plugin Redmine Git Hosting 4.0.2
This commit is contained in:
parent
472cb1ea76
commit
bdd66d941f
494 changed files with 36768 additions and 0 deletions
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,5 @@
|
|||
class AddIndexesToGitolitePublicKey < ActiveRecord::Migration[4.2]
|
||||
def change
|
||||
add_index :gitolite_public_keys, :identifier
|
||||
end
|
||||
end
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,5 @@
|
|||
class AddPostReceiveUrlModes < ActiveRecord::Migration[4.2]
|
||||
def change
|
||||
add_column :repository_post_receive_urls, :mode, :string, default: 'github'
|
||||
end
|
||||
end
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,5 @@
|
|||
class RenameTableGitRepositoryExtras < ActiveRecord::Migration[4.2]
|
||||
def change
|
||||
rename_table :git_repository_extras, :repository_git_extras
|
||||
end
|
||||
end
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,5 @@
|
|||
class AddFingerprintToGitolitePublicKeys < ActiveRecord::Migration[4.2]
|
||||
def change
|
||||
add_column :gitolite_public_keys, :fingerprint, :string, after: 'key'
|
||||
end
|
||||
end
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,5 @@
|
|||
class AddUrlsOrderToRepositoryGitExtra < ActiveRecord::Migration[4.2]
|
||||
def change
|
||||
add_column :repository_git_extras, :urls_order, :text
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
class AddUniqueIndexToFingerprint < ActiveRecord::Migration[4.2]
|
||||
def change
|
||||
add_index :gitolite_public_keys, :fingerprint, unique: true
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
class AddTypeFieldToGitConfigKeys < ActiveRecord::Migration[4.2]
|
||||
def change
|
||||
add_column :repository_git_config_keys, :type, :string
|
||||
end
|
||||
end
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue