aboutsummaryrefslogtreecommitdiff
path: root/models/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/repo.go')
-rw-r--r--models/repo.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/models/repo.go b/models/repo.go
index 23213b66..7fc24c29 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -140,7 +140,7 @@ func NewRepoContext() {
RemoveAllWithNotice("Clean up repository temporary data", filepath.Join(setting.AppDataPath, "tmp"))
}
-// Repository represents a git repository.
+// Repository contains information of a repository.
type Repository struct {
ID int64 `xorm:"pk autoincr"`
OwnerID int64 `xorm:"UNIQUE(s)"`
@@ -150,6 +150,7 @@ type Repository struct {
Description string
Website string
DefaultBranch string
+ Size int64 `xorm:"NOT NULL DEFAULT 0"`
NumWatches int
NumStars int
@@ -292,6 +293,19 @@ func (repo *Repository) mustOwner(e Engine) *User {
return repo.Owner
}
+func (repo *Repository) UpdateSize() error {
+ countObject, err := git.GetRepoSize(repo.RepoPath())
+ if err != nil {
+ return fmt.Errorf("GetRepoSize: %v", err)
+ }
+
+ repo.Size = countObject.Size + countObject.SizePack
+ if _, err = x.Id(repo.ID).Cols("size").Update(repo); err != nil {
+ return fmt.Errorf("update size: %v", err)
+ }
+ return nil
+}
+
// ComposeMetas composes a map of metas for rendering external issue tracker URL.
func (repo *Repository) ComposeMetas() map[string]string {
if !repo.EnableExternalTracker {