mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-22 11:06:10 +10:00
Improve performance of viewing individual issues This MR does two things: 1. `Issue#related_branches` no longer performs Git operations that aren't needed 2. The output of `Repository#exists?` is now cached and flushed properly Combined these two changes should further cut down the amount of Git operations performed when viewing individual issues (and possibly other pages). See merge request !3296
35 lines
952 B
Ruby
35 lines
952 B
Ruby
class RepositoryForkWorker
|
|
include Sidekiq::Worker
|
|
include Gitlab::ShellAdapter
|
|
|
|
sidekiq_options queue: :gitlab_shell
|
|
|
|
def perform(project_id, source_path, target_path)
|
|
project = Project.find_by_id(project_id)
|
|
|
|
unless project.present?
|
|
logger.error("Project #{project_id} no longer exists!")
|
|
return
|
|
end
|
|
|
|
result = gitlab_shell.fork_repository(source_path, target_path)
|
|
unless result
|
|
logger.error("Unable to fork project #{project_id} for repository #{source_path} -> #{target_path}")
|
|
project.update(import_error: "The project could not be forked.")
|
|
project.import_fail
|
|
return
|
|
end
|
|
|
|
project.repository.after_import
|
|
|
|
unless project.valid_repo?
|
|
logger.error("Project #{project_id} had an invalid repository after fork")
|
|
project.update(import_error: "The forked repository is invalid.")
|
|
project.import_fail
|
|
return
|
|
end
|
|
|
|
project.import_finish
|
|
end
|
|
end
|