Skip to content

Commit d58b2dd

Browse files
committed
move more git related functions to models/git
1 parent 64c409c commit d58b2dd

File tree

11 files changed

+49
-61
lines changed

11 files changed

+49
-61
lines changed

models/commit.go

Lines changed: 0 additions & 27 deletions
This file was deleted.

models/git/commit_status.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"code.gitea.io/gitea/models/db"
1717
repo_model "code.gitea.io/gitea/models/repo"
1818
user_model "code.gitea.io/gitea/models/user"
19+
"code.gitea.io/gitea/modules/git"
1920
"code.gitea.io/gitea/modules/log"
2021
"code.gitea.io/gitea/modules/setting"
2122
api "code.gitea.io/gitea/modules/structs"
@@ -353,3 +354,17 @@ func ParseCommitsWithStatus(oldCommits []*asymkey_model.SignCommit, repo *repo_m
353354
func hashCommitStatusContext(context string) string {
354355
return fmt.Sprintf("%x", sha1.Sum([]byte(context)))
355356
}
357+
358+
// ConvertFromGitCommit converts git commits into SignCommitWithStatuses
359+
func ConvertFromGitCommit(commits []*git.Commit, repo *repo_model.Repository) []*SignCommitWithStatuses {
360+
return ParseCommitsWithStatus(
361+
asymkey_model.ParseCommitsWithSignature(
362+
user_model.ValidateCommitsWithEmails(commits),
363+
repo.GetTrustModel(),
364+
func(user *user_model.User) (bool, error) {
365+
return repo_model.IsOwnerMemberCollaborator(repo, user.ID)
366+
},
367+
),
368+
repo,
369+
)
370+
}

models/issue_comment.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,7 @@ func (c *Comment) LoadPushCommits(ctx context.Context) (err error) {
762762
}
763763
defer closer.Close()
764764

765-
c.Commits = ConvertFromGitCommit(gitRepo.GetCommitsFromIDs(data.CommitIDs), c.Issue.Repo)
765+
c.Commits = git_model.ConvertFromGitCommit(gitRepo.GetCommitsFromIDs(data.CommitIDs), c.Issue.Repo)
766766
c.CommitsNum = int64(len(c.Commits))
767767
}
768768

models/repo/collaboration.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
"code.gitea.io/gitea/models/db"
1212
"code.gitea.io/gitea/models/perm"
13+
"code.gitea.io/gitea/models/unit"
1314
user_model "code.gitea.io/gitea/models/user"
1415
"code.gitea.io/gitea/modules/log"
1516
"code.gitea.io/gitea/modules/timeutil"
@@ -149,3 +150,23 @@ func ChangeCollaborationAccessMode(repo *Repository, uid int64, mode perm.Access
149150

150151
return committer.Commit()
151152
}
153+
154+
// IsOwnerMemberCollaborator checks if a provided user is the owner, a collaborator or a member of a team in a repository
155+
func IsOwnerMemberCollaborator(repo *Repository, userID int64) (bool, error) {
156+
if repo.OwnerID == userID {
157+
return true, nil
158+
}
159+
teamMember, err := db.GetEngine(db.DefaultContext).Join("INNER", "team_repo", "team_repo.team_id = team_user.team_id").
160+
Join("INNER", "team_unit", "team_unit.team_id = team_user.team_id").
161+
Where("team_repo.repo_id = ?", repo.ID).
162+
And("team_unit.`type` = ?", unit.TypeCode).
163+
And("team_user.uid = ?", userID).Table("team_user").Exist()
164+
if err != nil {
165+
return false, err
166+
}
167+
if teamMember {
168+
return true, nil
169+
}
170+
171+
return db.GetEngine(db.DefaultContext).Get(&Collaboration{RepoID: repo.ID, UserID: userID})
172+
}

models/repo_collaboration.go

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@ import (
1010
"fmt"
1111

1212
"code.gitea.io/gitea/models/db"
13-
"code.gitea.io/gitea/models/organization"
1413
"code.gitea.io/gitea/models/perm"
1514
access_model "code.gitea.io/gitea/models/perm/access"
1615
repo_model "code.gitea.io/gitea/models/repo"
17-
"code.gitea.io/gitea/models/unit"
1816
user_model "code.gitea.io/gitea/models/user"
1917

2018
"xorm.io/builder"
@@ -120,23 +118,3 @@ func reconsiderWatches(ctx context.Context, repo *repo_model.Repository, uid int
120118
// Remove all IssueWatches a user has subscribed to in the repository
121119
return removeIssueWatchersByRepoID(ctx, uid, repo.ID)
122120
}
123-
124-
// IsOwnerMemberCollaborator checks if a provided user is the owner, a collaborator or a member of a team in a repository
125-
func IsOwnerMemberCollaborator(repo *repo_model.Repository, userID int64) (bool, error) {
126-
if repo.OwnerID == userID {
127-
return true, nil
128-
}
129-
teamMember, err := db.GetEngine(db.DefaultContext).Join("INNER", "team_repo", "team_repo.team_id = team_user.team_id").
130-
Join("INNER", "team_unit", "team_unit.team_id = team_user.team_id").
131-
Where("team_repo.repo_id = ?", repo.ID).
132-
And("team_unit.`type` = ?", unit.TypeCode).
133-
And("team_user.uid = ?", userID).Table("team_user").Exist(&organization.TeamUser{})
134-
if err != nil {
135-
return false, err
136-
}
137-
if teamMember {
138-
return true, nil
139-
}
140-
141-
return db.GetEngine(db.DefaultContext).Get(&repo_model.Collaboration{RepoID: repo.ID, UserID: userID})
142-
}

modules/gitgraph/graph_models.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"fmt"
1010
"strings"
1111

12-
"code.gitea.io/gitea/models"
1312
asymkey_model "code.gitea.io/gitea/models/asymkey"
1413
"code.gitea.io/gitea/models/db"
1514
git_model "code.gitea.io/gitea/models/git"
@@ -118,7 +117,7 @@ func (graph *Graph) LoadAndProcessCommits(repository *repo_model.Repository, git
118117
c.Verification = asymkey_model.ParseCommitWithSignature(c.Commit)
119118

120119
_ = asymkey_model.CalculateTrustStatus(c.Verification, repository.GetTrustModel(), func(user *user_model.User) (bool, error) {
121-
return models.IsOwnerMemberCollaborator(repository, user.ID)
120+
return repo_model.IsOwnerMemberCollaborator(repository, user.ID)
122121
}, &keyMap)
123122

124123
statuses, _, err := git_model.GetLatestCommitStatus(db.DefaultContext, repository.ID, c.Commit.ID.String(), db.ListOptions{})

routers/web/repo/commit.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ import (
1111
"net/http"
1212
"strings"
1313

14-
"code.gitea.io/gitea/models"
1514
asymkey_model "code.gitea.io/gitea/models/asymkey"
1615
"code.gitea.io/gitea/models/db"
1716
git_model "code.gitea.io/gitea/models/git"
17+
repo_model "code.gitea.io/gitea/models/repo"
1818
user_model "code.gitea.io/gitea/models/user"
1919
"code.gitea.io/gitea/modules/base"
2020
"code.gitea.io/gitea/modules/charset"
@@ -76,7 +76,7 @@ func Commits(ctx *context.Context) {
7676
ctx.ServerError("CommitsByRange", err)
7777
return
7878
}
79-
ctx.Data["Commits"] = models.ConvertFromGitCommit(commits, ctx.Repo.Repository)
79+
ctx.Data["Commits"] = git_model.ConvertFromGitCommit(commits, ctx.Repo.Repository)
8080

8181
ctx.Data["Username"] = ctx.Repo.Owner.Name
8282
ctx.Data["Reponame"] = ctx.Repo.Repository.Name
@@ -195,7 +195,7 @@ func SearchCommits(ctx *context.Context) {
195195
return
196196
}
197197
ctx.Data["CommitCount"] = len(commits)
198-
ctx.Data["Commits"] = models.ConvertFromGitCommit(commits, ctx.Repo.Repository)
198+
ctx.Data["Commits"] = git_model.ConvertFromGitCommit(commits, ctx.Repo.Repository)
199199

200200
ctx.Data["Keyword"] = query
201201
if all {
@@ -236,7 +236,7 @@ func FileHistory(ctx *context.Context) {
236236
ctx.ServerError("CommitsByFileAndRange", err)
237237
return
238238
}
239-
ctx.Data["Commits"] = models.ConvertFromGitCommit(commits, ctx.Repo.Repository)
239+
ctx.Data["Commits"] = git_model.ConvertFromGitCommit(commits, ctx.Repo.Repository)
240240

241241
ctx.Data["Username"] = ctx.Repo.Owner.Name
242242
ctx.Data["Reponame"] = ctx.Repo.Repository.Name
@@ -351,7 +351,7 @@ func Diff(ctx *context.Context) {
351351
ctx.Data["DiffNotAvailable"] = diff.NumFiles == 0
352352

353353
if err := asymkey_model.CalculateTrustStatus(verification, ctx.Repo.Repository.GetTrustModel(), func(user *user_model.User) (bool, error) {
354-
return models.IsOwnerMemberCollaborator(ctx.Repo.Repository, user.ID)
354+
return repo_model.IsOwnerMemberCollaborator(ctx.Repo.Repository, user.ID)
355355
}, nil); err != nil {
356356
ctx.ServerError("CalculateTrustStatus", err)
357357
return

routers/web/repo/compare.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"strings"
1919

2020
"code.gitea.io/gitea/models"
21+
git_model "code.gitea.io/gitea/models/git"
2122
access_model "code.gitea.io/gitea/models/perm/access"
2223
repo_model "code.gitea.io/gitea/models/repo"
2324
"code.gitea.io/gitea/models/unit"
@@ -636,7 +637,7 @@ func PrepareCompareDiff(
636637
return false
637638
}
638639

639-
commits := models.ConvertFromGitCommit(ci.CompareInfo.Commits, ci.HeadRepo)
640+
commits := git_model.ConvertFromGitCommit(ci.CompareInfo.Commits, ci.HeadRepo)
640641
ctx.Data["Commits"] = commits
641642
ctx.Data["CommitCount"] = len(commits)
642643

routers/web/repo/pull.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,7 @@ func ViewPullCommits(ctx *context.Context) {
628628
ctx.Data["Username"] = ctx.Repo.Owner.Name
629629
ctx.Data["Reponame"] = ctx.Repo.Repository.Name
630630

631-
commits := models.ConvertFromGitCommit(prInfo.Commits, ctx.Repo.Repository)
631+
commits := git_model.ConvertFromGitCommit(prInfo.Commits, ctx.Repo.Repository)
632632
ctx.Data["Commits"] = commits
633633
ctx.Data["CommitCount"] = len(commits)
634634

routers/web/repo/view.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -843,7 +843,7 @@ func renderDirectoryFiles(ctx *context.Context, timeout time.Duration) git.Entri
843843
verification := asymkey_model.ParseCommitWithSignature(latestCommit)
844844

845845
if err := asymkey_model.CalculateTrustStatus(verification, ctx.Repo.Repository.GetTrustModel(), func(user *user_model.User) (bool, error) {
846-
return models.IsOwnerMemberCollaborator(ctx.Repo.Repository, user.ID)
846+
return repo_model.IsOwnerMemberCollaborator(ctx.Repo.Repository, user.ID)
847847
}, nil); err != nil {
848848
ctx.ServerError("CalculateTrustStatus", err)
849849
return nil

0 commit comments

Comments
 (0)