Skip to content

Commit b53c579

Browse files
authored
Merge branch 'main' into avatarapi
2 parents 200dad8 + f0b773e commit b53c579

File tree

19 files changed

+227
-12
lines changed

19 files changed

+227
-12
lines changed

models/db/search.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ const (
2020
SearchOrderByNewest SearchOrderBy = "created_unix DESC"
2121
SearchOrderBySize SearchOrderBy = "size ASC"
2222
SearchOrderBySizeReverse SearchOrderBy = "size DESC"
23+
SearchOrderByGitSize SearchOrderBy = "git_size ASC"
24+
SearchOrderByGitSizeReverse SearchOrderBy = "git_size DESC"
25+
SearchOrderByLFSSize SearchOrderBy = "lfs_size ASC"
26+
SearchOrderByLFSSizeReverse SearchOrderBy = "lfs_size DESC"
2327
SearchOrderByID SearchOrderBy = "id ASC"
2428
SearchOrderByIDReverse SearchOrderBy = "id DESC"
2529
SearchOrderByStars SearchOrderBy = "num_stars ASC"

models/migrations/migrations.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,8 @@ var migrations = []Migration{
507507
NewMigration("Add variable table", v1_21.CreateVariableTable),
508508
// v262 -> v263
509509
NewMigration("Add TriggerEvent to action_run table", v1_21.AddTriggerEventToActionRun),
510+
// v263 -> v264
511+
NewMigration("Add git_size and lfs_size columns to repository table", v1_21.AddGitSizeAndLFSSizeToRepositoryTable),
510512
}
511513

512514
// GetCurrentDBVersion returns the current db version

models/migrations/v1_21/v263.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Copyright 2023 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package v1_21 //nolint
5+
6+
import (
7+
"fmt"
8+
9+
"xorm.io/xorm"
10+
)
11+
12+
// AddGitSizeAndLFSSizeToRepositoryTable: add GitSize and LFSSize columns to Repository
13+
func AddGitSizeAndLFSSizeToRepositoryTable(x *xorm.Engine) error {
14+
type Repository struct {
15+
GitSize int64 `xorm:"NOT NULL DEFAULT 0"`
16+
LFSSize int64 `xorm:"NOT NULL DEFAULT 0"`
17+
}
18+
19+
sess := x.NewSession()
20+
defer sess.Close()
21+
22+
if err := sess.Begin(); err != nil {
23+
return err
24+
}
25+
26+
if err := sess.Sync2(new(Repository)); err != nil {
27+
return fmt.Errorf("Sync2: %w", err)
28+
}
29+
30+
_, err := sess.Exec(`UPDATE repository SET lfs_size=(SELECT SUM(size) FROM lfs_meta_object WHERE lfs_meta_object.repository_id=repository.ID) WHERE EXISTS (SELECT 1 FROM lfs_meta_object WHERE lfs_meta_object.repository_id=repository.ID)`)
31+
if err != nil {
32+
return err
33+
}
34+
35+
_, err = sess.Exec(`UPDATE repository SET git_size = size - lfs_size`)
36+
if err != nil {
37+
return err
38+
}
39+
40+
return sess.Commit()
41+
}

models/repo/repo.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"code.gitea.io/gitea/models/db"
1717
"code.gitea.io/gitea/models/unit"
1818
user_model "code.gitea.io/gitea/models/user"
19+
"code.gitea.io/gitea/modules/base"
1920
"code.gitea.io/gitea/modules/log"
2021
"code.gitea.io/gitea/modules/markup"
2122
"code.gitea.io/gitea/modules/setting"
@@ -163,6 +164,8 @@ type Repository struct {
163164
IsTemplate bool `xorm:"INDEX NOT NULL DEFAULT false"`
164165
TemplateID int64 `xorm:"INDEX"`
165166
Size int64 `xorm:"NOT NULL DEFAULT 0"`
167+
GitSize int64 `xorm:"NOT NULL DEFAULT 0"`
168+
LFSSize int64 `xorm:"NOT NULL DEFAULT 0"`
166169
CodeIndexerStatus *RepoIndexerStatus `xorm:"-"`
167170
StatsIndexerStatus *RepoIndexerStatus `xorm:"-"`
168171
IsFsckEnabled bool `xorm:"NOT NULL DEFAULT true"`
@@ -196,6 +199,42 @@ func (repo *Repository) SanitizedOriginalURL() string {
196199
return u.String()
197200
}
198201

202+
// text representations to be returned in SizeDetail.Name
203+
const (
204+
SizeDetailNameGit = "git"
205+
SizeDetailNameLFS = "lfs"
206+
)
207+
208+
type SizeDetail struct {
209+
Name string
210+
Size int64
211+
}
212+
213+
// SizeDetails forms a struct with various size details about repository
214+
func (repo *Repository) SizeDetails() []SizeDetail {
215+
sizeDetails := []SizeDetail{
216+
{
217+
Name: SizeDetailNameGit,
218+
Size: repo.GitSize,
219+
},
220+
{
221+
Name: SizeDetailNameLFS,
222+
Size: repo.LFSSize,
223+
},
224+
}
225+
return sizeDetails
226+
}
227+
228+
// SizeDetailsString returns a concatenation of all repository size details as a string
229+
func (repo *Repository) SizeDetailsString() string {
230+
var str strings.Builder
231+
sizeDetails := repo.SizeDetails()
232+
for _, detail := range sizeDetails {
233+
str.WriteString(fmt.Sprintf("%s: %s, ", detail.Name, base.FileSize(detail.Size)))
234+
}
235+
return strings.TrimSuffix(str.String(), ", ")
236+
}
237+
199238
func (repo *Repository) LogString() string {
200239
if repo == nil {
201240
return "<Repository nil>"

models/repo/update.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,9 +185,11 @@ func ChangeRepositoryName(doer *user_model.User, repo *Repository, newRepoName s
185185
}
186186

187187
// UpdateRepoSize updates the repository size, calculating it using getDirectorySize
188-
func UpdateRepoSize(ctx context.Context, repoID, size int64) error {
189-
_, err := db.GetEngine(ctx).ID(repoID).Cols("size").NoAutoTime().Update(&Repository{
190-
Size: size,
188+
func UpdateRepoSize(ctx context.Context, repoID, gitSize, lfsSize int64) error {
189+
_, err := db.GetEngine(ctx).ID(repoID).Cols("size", "git_size", "lfs_size").NoAutoTime().Update(&Repository{
190+
Size: gitSize + lfsSize,
191+
GitSize: gitSize,
192+
LFSSize: lfsSize,
191193
})
192194
return err
193195
}

modules/actions/log.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func WriteLogs(ctx context.Context, filename string, offset int64, rows []*runne
7373
}
7474

7575
func ReadLogs(ctx context.Context, inStorage bool, filename string, offset, limit int64) ([]*runnerv1.LogRow, error) {
76-
f, err := openLogs(ctx, inStorage, filename)
76+
f, err := OpenLogs(ctx, inStorage, filename)
7777
if err != nil {
7878
return nil, err
7979
}
@@ -141,7 +141,7 @@ func RemoveLogs(ctx context.Context, inStorage bool, filename string) error {
141141
return nil
142142
}
143143

144-
func openLogs(ctx context.Context, inStorage bool, filename string) (io.ReadSeekCloser, error) {
144+
func OpenLogs(ctx context.Context, inStorage bool, filename string) (io.ReadSeekCloser, error) {
145145
if !inStorage {
146146
name := DBFSPrefix + filename
147147
f, err := dbfs.Open(ctx, name)

modules/repository/create.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ func UpdateRepoSize(ctx context.Context, repo *repo_model.Repository) error {
330330
return fmt.Errorf("updateSize: GetLFSMetaObjects: %w", err)
331331
}
332332

333-
return repo_model.UpdateRepoSize(ctx, repo.ID, size+lfsSize)
333+
return repo_model.UpdateRepoSize(ctx, repo.ID, size, lfsSize)
334334
}
335335

336336
// CheckDaemonExportOK creates/removes git-daemon-export-ok for git-daemon...

options/locale/locale_en-US.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ concept_user_organization = Organization
129129
show_timestamps = Show timestamps
130130
show_log_seconds = Show seconds
131131
show_full_screen = Show full screen
132+
download_logs = Download logs
132133

133134
confirm_delete_selected = Confirm to delete all selected items?
134135

@@ -2797,6 +2798,7 @@ repos.stars = Stars
27972798
repos.forks = Forks
27982799
repos.issues = Issues
27992800
repos.size = Size
2801+
repos.lfs_size = LFS Size
28002802
28012803
packages.package_manage_panel = Package Management
28022804
packages.total_size = Total Size: %s

0 commit comments

Comments
 (0)