From 3005efa88d552db8c7209bb3a0dc0ff1cf431d20 Mon Sep 17 00:00:00 2001 From: Even <412401474@qq.com> Date: Wed, 26 Aug 2026 23:24:07 +0800 Subject: [PATCH] fix: recognize linguist language aliases (#39135) Co-authored-by: loveulvu --- modules/git/languagestats/language_stats_get.go | 4 ++++ tests/integration/linguist_test.go | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/modules/git/languagestats/language_stats_get.go b/modules/git/languagestats/language_stats_get.go index 1d8051049bb..86f06e22498 100644 --- a/modules/git/languagestats/language_stats_get.go +++ b/modules/git/languagestats/language_stats_get.go @@ -114,6 +114,10 @@ func GetLanguageStats(ctx context.Context, repo *git.Repository, commitID string if hasLanguage := attrs.GetLanguage(); hasLanguage.Value() != "" { language := hasLanguage.Value() + if canonicalLanguage, ok := enry.GetLanguageByAlias(language); ok { + language = canonicalLanguage + } + // group languages, such as Pug -> HTML; SCSS -> CSS group := enry.GetLanguageGroup(language) if len(group) != 0 { diff --git a/tests/integration/linguist_test.go b/tests/integration/linguist_test.go index 67850cbf131..45e8d13292b 100644 --- a/tests/integration/linguist_test.go +++ b/tests/integration/linguist_test.go @@ -225,6 +225,17 @@ func TestLinguist(t *testing.T) { }, ExpectedLanguageOrder: []string{"YAML"}, }, + // case 15: linguist-language alias should resolve to its canonical language + { + GitAttributesContent: "*.cpp linguist-language=golang", + FilesToAdd: []*files_service.ChangeRepoFile{ + { + TreePath: "cplusplus.cpp", + ContentReader: strings.NewReader(cppContent), + }, + }, + ExpectedLanguageOrder: []string{"Go"}, + }, } for i, c := range cases {