프로젝트 리포지터리 스토리지 이동
GitLab 프로젝트 리포지터리 스토리지 이동 기능의 코드 설계와 주요 컴포넌트, 비즈니스 로직 및 흐름을 설명합니다.
이 문서는 기여자들이 프로젝트 리포지터리 스토리지 이동 의 코드 설계를 이해할 수 있도록 작성되었습니다. 이 기능의 코드를 변경하기 전에 이 문서를 먼저 읽으십시오. 이 문서는 코드가 자주 변경될 수 있으므로 코드 설계 개요로 의도적으로 제한되어 있습니다. 기능의 특정 부분이 어떻게 동작하는지 이해하려면 코드와 사양(spec)을 참조하십시오. 여기에 있는 세부 내용은 Code Owners 기능의 주요 컴포넌트가 어떻게 동작하는지 설명합니다. 이 문서에서 참조하는 코드베이스의 일부가 업데이트, 삭제되거나 새로운 부분이 추가되면 이 문서도 함께 업데이트되어야 합니다. 비즈니스 로직 # Projects::RepositoryStorageMove : 이동을 추적하며 상태 머신(state machine)을 포함합니다. app/models/projects/repository_storage_move.rb 에 정의됩니다. RepositoryStorageMovable : 상태 머신 로직, 검증기(validator), 일부 헬퍼 메서드를 포함합니다. app/models/concerns/repository_storage_movable.rb 에 정의됩니다. Project : 프로젝트 모델입니다. app/models/project.rb 에 정의됩니다. CanMoveRepositoryStorage : Project 에 포함되는 헬퍼 메서드를 포함합니다. app/models/concerns/can_move_repository_storage.rb 에 정의됩니다. API::ProjectRepositoryStorageMoves : 프로젝트 리포지터리 스토리지 이동을 위한 API 클래스입니다. lib/api/project_repository_storage_moves.rb 에 정의됩니다. Entities::Projects::RepositoryStorageMove : Projects::RepositoryStorageMove 모델을 직렬화하기 위한 API 엔티티입니다. lib/api/entities/projects/repository_storage_moves.rb 에 정의됩니다. Projects::ScheduleBulkRepositoryShardMovesService : 대량 이동을 예약하는 서비스입니다. app/services/projects/schedule_bulk_repository_shard_moves_service.rb 에 정의됩니다. ScheduleBulkRepositoryShardMovesMethods : 대량 이동을 위한 범용 메서드입니다. app/services/concerns/schedule_bulk_repository_shard_moves_methods.rb 에 정의됩니다. Projects::ScheduleBulkRepositoryShardMovesWorker : 대량 이동을 처리하는 워커입니다. app/workers/projects/schedule_bulk_repository_shard_moves_worker.rb 에 정의됩니다. Projects::Upda