From 0c047b39ec81595d96bf7c006ef77f63dc01238d Mon Sep 17 00:00:00 2001 From: a1012112796 <1012112796@qq.com> Date: Fri, 17 Feb 2023 09:53:40 +0000 Subject: [PATCH] use repo size detail Signed-off-by: a1012112796 <1012112796@qq.com> --- models/migrations/migrations.go | 2 +- models/migrations/v1_19/v243.go | 12 +++++++++--- models/repo/repo.go | 25 ++++++++++++++++++------- models/repo/update.go | 9 ++++++--- services/convert/repository.go | 2 +- templates/repo/settings/options.tmpl | 4 ++-- templates/repo/sub_menu.tmpl | 4 ++-- templates/user/settings/repos.tmpl | 4 ++-- 8 files changed, 41 insertions(+), 21 deletions(-) diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index 0fc9dc42ee208..c0feb6d9e3e19 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -460,7 +460,7 @@ var migrations = []Migration{ // v242 -> v243 NewMigration("Alter gpg_key_import content TEXT field to MEDIUMTEXT", v1_19.AlterPublicGPGKeyImportContentFieldToMediumText), // v243 -> v244 - NewMigration("Add lfs_size column to repository table", v1_19.AddLFSSizeToRepositoryTable), + NewMigration("Add size_details column to repository table", v1_19.AddSizeDetailsToRepositoryTable), } // GetCurrentDBVersion returns the current db version diff --git a/models/migrations/v1_19/v243.go b/models/migrations/v1_19/v243.go index 21a9a4ceeb9e1..8ea2f112bda7f 100644 --- a/models/migrations/v1_19/v243.go +++ b/models/migrations/v1_19/v243.go @@ -7,10 +7,16 @@ import ( "xorm.io/xorm" ) -// AddLFSSizeToRepositoryTable: add LFSSize column to Repository -func AddLFSSizeToRepositoryTable(x *xorm.Engine) error { +type SizeDetails struct { + GitSize int64 + LFSSize int64 + // TODO: size of more parts. +} + +// AddSizeDetailsToRepositoryTable: add LFSSize column to Repository +func AddSizeDetailsToRepositoryTable(x *xorm.Engine) error { type Repository struct { - LFSSize int64 `xorm:"NOT NULL DEFAULT 0"` + SizeDetails SizeDetails `xorm:"TEXT JSON"` } return x.Sync2(new(Repository)) diff --git a/models/repo/repo.go b/models/repo/repo.go index a06ae72690b8a..5ceaf0b817797 100644 --- a/models/repo/repo.go +++ b/models/repo/repo.go @@ -16,6 +16,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unit" user_model "code.gitea.io/gitea/models/user" + "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" @@ -112,6 +113,17 @@ const ( RepositoryBroken // repository is in a permanently broken state ) +// SizeDetails represents size of each part for a Repository +type SizeDetails struct { + GitSize int64 + LFSSize int64 + // TODO: size of more parts. +} + +func (s SizeDetails) String() string { + return fmt.Sprintf("git: " + base.FileSize(s.GitSize) + ", lfs: " + base.FileSize(s.LFSSize)) +} + // Repository represents a git repository. type Repository struct { ID int64 `xorm:"pk autoincr"` @@ -157,14 +169,13 @@ type Repository struct { Units []*RepoUnit `xorm:"-"` PrimaryLanguage *LanguageStat `xorm:"-"` - IsFork bool `xorm:"INDEX NOT NULL DEFAULT false"` - ForkID int64 `xorm:"INDEX"` - BaseRepo *Repository `xorm:"-"` - IsTemplate bool `xorm:"INDEX NOT NULL DEFAULT false"` - TemplateID int64 `xorm:"INDEX"` - // the size of git repository directory itself, not include lfs/package/attachment size + IsFork bool `xorm:"INDEX NOT NULL DEFAULT false"` + ForkID int64 `xorm:"INDEX"` + BaseRepo *Repository `xorm:"-"` + IsTemplate bool `xorm:"INDEX NOT NULL DEFAULT false"` + TemplateID int64 `xorm:"INDEX"` Size int64 `xorm:"NOT NULL DEFAULT 0"` - LFSSize int64 `xorm:"NOT NULL DEFAULT 0"` + SizeDetails SizeDetails `xorm:"TEXT JSON"` CodeIndexerStatus *RepoIndexerStatus `xorm:"-"` StatsIndexerStatus *RepoIndexerStatus `xorm:"-"` IsFsckEnabled bool `xorm:"NOT NULL DEFAULT true"` diff --git a/models/repo/update.go b/models/repo/update.go index 59a8ff1c58861..4374e2d3323f8 100644 --- a/models/repo/update.go +++ b/models/repo/update.go @@ -186,9 +186,12 @@ func ChangeRepositoryName(doer *user_model.User, repo *Repository, newRepoName s // UpdateRepoSize updates the repository size, calculating it using getDirectorySize func UpdateRepoSize(ctx context.Context, repoID, size, lfsSize int64) error { - _, err := db.GetEngine(ctx).ID(repoID).Cols("size", "lfs_size").NoAutoTime().Update(&Repository{ - Size: size, - LFSSize: lfsSize, + _, err := db.GetEngine(ctx).ID(repoID).Cols("size", "size_details").NoAutoTime().Update(&Repository{ + Size: size + lfsSize, + SizeDetails: SizeDetails{ + GitSize: size, + LFSSize: lfsSize, + }, }) return err } diff --git a/services/convert/repository.go b/services/convert/repository.go index b6599ed2627c6..5db68e837934d 100644 --- a/services/convert/repository.go +++ b/services/convert/repository.go @@ -148,7 +148,7 @@ func innerToRepo(ctx context.Context, repo *repo_model.Repository, mode perm.Acc Template: repo.IsTemplate, Empty: repo.IsEmpty, Archived: repo.IsArchived, - Size: int((repo.Size + repo.LFSSize) / 1024), + Size: int(repo.Size / 1024), Fork: repo.IsFork, Parent: parent, Mirror: repo.IsMirror, diff --git a/templates/repo/settings/options.tmpl b/templates/repo/settings/options.tmpl index 997ddedeb9de1..7011161b6875d 100644 --- a/templates/repo/settings/options.tmpl +++ b/templates/repo/settings/options.tmpl @@ -16,9 +16,9 @@ -