Skip to content

Commit fb7e69f

Browse files
authored
Merge branch 'main' into fix-18391-comment-field-needs-to-be-colspan-3
2 parents 0a19b45 + 6392f46 commit fb7e69f

File tree

11 files changed

+72
-8
lines changed

11 files changed

+72
-8
lines changed

contrib/ide/vscode/launch.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
"request": "launch",
88
"mode": "debug",
99
"buildFlags": "",
10-
"port": 2345,
11-
"host": "127.0.0.1",
1210
"program": "${workspaceRoot}/main.go",
13-
"env": {},
11+
"env": {
12+
"GITEA_WORK_DIR": "${workspaceRoot}",
13+
},
1414
"args": ["web"],
1515
"showLog": true
1616
},
@@ -20,10 +20,10 @@
2020
"request": "launch",
2121
"mode": "debug",
2222
"buildFlags": "-tags='sqlite sqlite_unlock_notify'",
23-
"port": 2345,
24-
"host": "127.0.0.1",
2523
"program": "${workspaceRoot}/main.go",
26-
"env": {},
24+
"env": {
25+
"GITEA_WORK_DIR": "${workspaceRoot}",
26+
},
2727
"args": ["web"],
2828
"showLog": true
2929
}

models/repo/repo.go

+24
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,30 @@ func (repo *Repository) MustOwner() *user_model.User {
222222
return repo.mustOwner(db.DefaultContext)
223223
}
224224

225+
// LoadAttributes loads attributes of the repository.
226+
func (repo *Repository) LoadAttributes(ctx context.Context) error {
227+
// Load owner
228+
if err := repo.GetOwner(ctx); err != nil {
229+
return fmt.Errorf("load owner: %w", err)
230+
}
231+
232+
// Load primary language
233+
stats := make(LanguageStatList, 0, 1)
234+
if err := db.GetEngine(ctx).
235+
Where("`repo_id` = ? AND `is_primary` = ? AND `language` != ?", repo.ID, true, "other").
236+
Find(&stats); err != nil {
237+
return fmt.Errorf("find primary languages: %w", err)
238+
}
239+
stats.LoadAttributes()
240+
for _, st := range stats {
241+
if st.RepoID == repo.ID {
242+
repo.PrimaryLanguage = st
243+
break
244+
}
245+
}
246+
return nil
247+
}
248+
225249
// FullName returns the repository full name
226250
func (repo *Repository) FullName() string {
227251
return repo.OwnerName + "/" + repo.Name

models/repo_list.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,7 @@ func FindUserAccessibleRepoIDs(user *user_model.User) ([]int64, error) {
623623
}
624624

625625
// GetUserRepositories returns a list of repositories of given user.
626-
func GetUserRepositories(opts *SearchRepoOptions) ([]*repo_model.Repository, int64, error) {
626+
func GetUserRepositories(opts *SearchRepoOptions) (RepositoryList, int64, error) {
627627
if len(opts.OrderBy) == 0 {
628628
opts.OrderBy = "updated_unix DESC"
629629
}
@@ -646,6 +646,6 @@ func GetUserRepositories(opts *SearchRepoOptions) ([]*repo_model.Repository, int
646646
}
647647

648648
sess = sess.Where(cond).OrderBy(opts.OrderBy.String())
649-
repos := make([]*repo_model.Repository, 0, opts.PageSize)
649+
repos := make(RepositoryList, 0, opts.PageSize)
650650
return repos, count, db.SetSessionPagination(sess, opts).Find(&repos)
651651
}

modules/convert/repository.go

+9
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,13 @@ func innerToRepo(repo *repo_model.Repository, mode perm.AccessMode, isParent boo
125125
}
126126
}
127127

128+
var language string
129+
if repo.PrimaryLanguage != nil {
130+
language = repo.PrimaryLanguage.Language
131+
}
132+
133+
repoAPIURL := repo.APIURL()
134+
128135
return &api.Repository{
129136
ID: repo.ID,
130137
Owner: ToUserWithAccessMode(repo.Owner, mode),
@@ -144,6 +151,8 @@ func innerToRepo(repo *repo_model.Repository, mode perm.AccessMode, isParent boo
144151
CloneURL: cloneLink.HTTPS,
145152
OriginalURL: repo.SanitizedOriginalURL(),
146153
Website: repo.Website,
154+
Language: language,
155+
LanguagesURL: repoAPIURL + "/languages",
147156
Stars: repo.NumStars,
148157
Forks: repo.NumForks,
149158
Watchers: repo.NumWatches,

modules/structs/repo.go

+2
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ type Repository struct {
5959
Parent *Repository `json:"parent"`
6060
Mirror bool `json:"mirror"`
6161
Size int `json:"size"`
62+
Language string `json:"language"`
63+
LanguagesURL string `json:"languages_url"`
6264
HTMLURL string `json:"html_url"`
6365
SSHURL string `json:"ssh_url"`
6466
CloneURL string `json:"clone_url"`

options/locale/locale_pt-PT.ini

+4
Original file line numberDiff line numberDiff line change
@@ -1931,6 +1931,10 @@ settings.add_matrix_hook_desc=Integrar <a href="%s">Matrix</a> no seu repositór
19311931
settings.add_msteams_hook_desc=Integrar <a href="%s">Microsoft Teams</a> no seu repositório.
19321932
settings.add_feishu_hook_desc=Integrar <a href="%s">Feishu</a> no seu repositório.
19331933
settings.add_Wechat_hook_desc=Integrar <a href="%s">Wechatwork</a> no seu repositório.
1934+
settings.add_packagist_hook_desc=Integrar <a href="%s">Packagist</a> no seu repositório.
1935+
settings.packagist_username=Nome de utilizador no Packagist
1936+
settings.packagist_api_token=Código da API
1937+
settings.packagist_package_url=URL do pacote Packagist
19341938
settings.deploy_keys=Chaves de instalação
19351939
settings.add_deploy_key=Adicionar chave de instalação
19361940
settings.deploy_key_desc=Chaves de instalação têm acesso para puxar do repositório apenas em modo de leitura.

options/locale/locale_zh-CN.ini

+4
Original file line numberDiff line numberDiff line change
@@ -1947,6 +1947,10 @@ settings.add_matrix_hook_desc=将 <a href="%s">Matrix</a> 集成到您的仓库
19471947
settings.add_msteams_hook_desc=将 <a href="%s">Microsoft Teams</a> 集成到您的仓库中。
19481948
settings.add_feishu_hook_desc=将 <a href="%s">Feishu</a> 集成到您的仓库中。
19491949
settings.add_Wechat_hook_desc=将 <a href="%s">企业微信</a> 集成到您的仓库中。
1950+
settings.add_packagist_hook_desc=将 <a href="%s">Packagist</a> 集成到您的仓库中。
1951+
settings.packagist_username=Packagist 用户名
1952+
settings.packagist_api_token=API 令牌
1953+
settings.packagist_package_url=Packagist 软件包 URL
19501954
settings.deploy_keys=部署密钥
19511955
settings.add_deploy_key=添加部署密钥
19521956
settings.deploy_key_desc=部署密钥具有对仓库的只读拉取权限。

routers/api/v1/repo/repo.go

+5
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,11 @@ func Get(ctx *context.APIContext) {
533533
// "200":
534534
// "$ref": "#/responses/Repository"
535535

536+
if err := ctx.Repo.Repository.LoadAttributes(ctx); err != nil {
537+
ctx.Error(http.StatusInternalServerError, "Repository.LoadAttributes", err)
538+
return
539+
}
540+
536541
ctx.JSON(http.StatusOK, convert.ToRepo(ctx.Repo.Repository, ctx.Repo.AccessMode))
537542
}
538543

routers/api/v1/user/repo.go

+5
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ func listUserRepos(ctx *context.APIContext, u *user_model.User, private bool) {
3232
return
3333
}
3434

35+
if err := repos.LoadAttributes(); err != nil {
36+
ctx.Error(http.StatusInternalServerError, "RepositoryList.LoadAttributes", err)
37+
return
38+
}
39+
3540
apiRepos := make([]*api.Repository, 0, len(repos))
3641
for i := range repos {
3742
access, err := models.AccessLevel(ctx.User, repos[i])

services/migrations/restore.go

+3
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ func (r *RepositoryRestorer) GetTopics() ([]string, error) {
9797

9898
bs, err := os.ReadFile(p)
9999
if err != nil {
100+
if os.IsNotExist(err) {
101+
return nil, nil
102+
}
100103
return nil, err
101104
}
102105

templates/swagger/v1_json.tmpl

+8
Original file line numberDiff line numberDiff line change
@@ -17188,6 +17188,14 @@
1718817188
"internal_tracker": {
1718917189
"$ref": "#/definitions/InternalTracker"
1719017190
},
17191+
"language": {
17192+
"type": "string",
17193+
"x-go-name": "Language"
17194+
},
17195+
"languages_url": {
17196+
"type": "string",
17197+
"x-go-name": "LanguagesURL"
17198+
},
1719117199
"mirror": {
1719217200
"type": "boolean",
1719317201
"x-go-name": "Mirror"

0 commit comments

Comments
 (0)