Añade el plugin Redmine Git Hosting 5.0.0

This commit is contained in:
Manuel Cillero 2021-03-20 13:29:16 +01:00
parent cfa0d58b18
commit a3bddad233
458 changed files with 30396 additions and 1 deletions

View file

@ -0,0 +1,22 @@
module Projects
class Base
include RedmineGitHosting::GitoliteAccessor::Methods
attr_reader :project, :options
def initialize(project, opts = {})
@project = project
@options = opts
end
class << self
def call(project, opts = {})
new(project, opts).call
end
end
def call
raise NotImplementedError
end
end
end

View file

@ -0,0 +1,27 @@
module Projects
class CreateRepository < Base
def call
create_project_repository
end
private
def create_project_repository
# Create new repository
repository = Repository.factory('Xitolite')
repository.is_default = true
repository.extra_info = {}
repository.extra_info['extra_report_last_commit'] = '1'
# Save it to database
project.repositories << repository
# Create it in Gitolite
Repositories::Create.call(repository, creation_options)
end
def creation_options
{ create_readme_file: RedmineGitHosting::Config.init_repositories_on_create? }
end
end
end

View file

@ -0,0 +1,27 @@
module Projects
class ExecuteHooks
attr_reader :project, :hook_type, :params
def initialize(project, hook_type, params = {})
@project = project
@hook_type = hook_type
@params = params
end
class << self
def call(project, hook_type, params = {})
new(project, hook_type, params).call
end
end
def call
send("execute_#{hook_type}_hook")
end
private
def execute_github_hook
RedmineHooks::GithubIssuesSync.call(project, params)
end
end
end

View file

@ -0,0 +1,24 @@
module Projects
class Update < Base
def call
# Adjust daemon status
disable_git_daemon_if_not_public
resync
end
private
def disable_git_daemon_if_not_public
# Go through all gitolite repos and disable Git daemon if necessary
project.gitolite_repos.each do |repository|
repository.extra[:git_daemon] = false if repository.git_daemon_enabled? && !project.is_public
# Save GitExtra in all cases to trigger urls order consistency checks
repository.extra.save
end
end
def resync
gitolite_accessor.update_projects([project.id], options)
end
end
end