Extract programming language resolver
What does this MR do and why?
Projects::DetectRepositoryLanguagesService mixes repository language
updates with ProgrammingLanguage lookup and creation. This makes the
service harder to change when adjusting language matching behavior.
This MR:
- Adds
Gitlab::LanguageDetection::ProgrammingLanguageResolver. - Moves
ProgrammingLanguagelookup and creation into the resolver. - Consumes
Gitlab::LanguageDetection::DetectedLanguageobjects. - Preserves existing behavior without changing language matching.
- Removes unused name-based color and Gitaly ID helper methods.
- Adds resolver specs documenting current behavior.
This is a stacked refactor on top of !241475 (merged). It intentionally does not include the Mathematica/Wolfram language matching fix.
References
#602294 (closed) !241475 (merged)
How to set up and validate locally
-
Check out the stacked base branch:
git switch 602294-refactor-language-detection-object -
Check out this branch:
git switch 602294-extract-programming-language-resolver -
Run affected specs:
bin/rspec spec/lib/gitlab/language_detection_spec.rb spec/lib/gitlab/language_detection/programming_language_resolver_spec.rb spec/services/projects/detect_repository_languages_service_spec.rb -
Run RuboCop:
bundle exec rubocop app/services/projects/detect_repository_languages_service.rb lib/gitlab/language_detection.rb lib/gitlab/language_detection/programming_language_resolver.rb spec/lib/gitlab/language_detection_spec.rb spec/lib/gitlab/language_detection/programming_language_resolver_spec.rb spec/services/projects/detect_repository_languages_service_spec.rb
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Edited by Vasilii Iakliushin