Skip to content

Commit 467e294

Browse files
authored
Merge branch 'master' into fix-14682-update-size-cron-gc
2 parents b7f0def + 290cf75 commit 467e294

36 files changed

+187
-99
lines changed

integrations/api_issue_reaction_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func TestAPIIssuesReactions(t *testing.T) {
6161
DecodeJSON(t, resp, &apiReactions)
6262
expectResponse := make(map[int]api.Reaction)
6363
expectResponse[0] = api.Reaction{
64-
User: convert.ToUser(user2, true, true),
64+
User: convert.ToUser(user2, user2),
6565
Reaction: "eyes",
6666
Created: time.Unix(1573248003, 0),
6767
}
@@ -121,12 +121,12 @@ func TestAPICommentReactions(t *testing.T) {
121121
DecodeJSON(t, resp, &apiReactions)
122122
expectResponse := make(map[int]api.Reaction)
123123
expectResponse[0] = api.Reaction{
124-
User: convert.ToUser(user2, true, true),
124+
User: convert.ToUser(user2, user2),
125125
Reaction: "laugh",
126126
Created: time.Unix(1573248004, 0),
127127
}
128128
expectResponse[1] = api.Reaction{
129-
User: convert.ToUser(user1, true, true),
129+
User: convert.ToUser(user1, user1),
130130
Reaction: "laugh",
131131
Created: time.Unix(1573248005, 0),
132132
}

integrations/api_team_user_test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,13 @@ func TestAPITeamUser(t *testing.T) {
3131
user2.Created = user2.Created.In(time.Local)
3232
user := models.AssertExistsAndLoadBean(t, &models.User{Name: "user2"}).(*models.User)
3333

34-
assert.Equal(t, convert.ToUser(user, true, false), user2)
34+
expectedUser := convert.ToUser(user, user)
35+
36+
// test time via unix timestamp
37+
assert.EqualValues(t, expectedUser.LastLogin.Unix(), user2.LastLogin.Unix())
38+
assert.EqualValues(t, expectedUser.Created.Unix(), user2.Created.Unix())
39+
expectedUser.LastLogin = user2.LastLogin
40+
expectedUser.Created = user2.Created
41+
42+
assert.Equal(t, expectedUser, user2)
3543
}

models/repo.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1083,7 +1083,7 @@ func CreateRepository(ctx DBContext, doer, u *User, repo *Repository, overwriteO
10831083
units = append(units, RepoUnit{
10841084
RepoID: repo.ID,
10851085
Type: tp,
1086-
Config: &PullRequestsConfig{AllowMerge: true, AllowRebase: true, AllowRebaseMerge: true, AllowSquash: true},
1086+
Config: &PullRequestsConfig{AllowMerge: true, AllowRebase: true, AllowRebaseMerge: true, AllowSquash: true, DefaultMergeStyle: MergeStyleMerge},
10871087
})
10881088
} else {
10891089
units = append(units, RepoUnit{

models/repo_unit.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ type PullRequestsConfig struct {
102102
AllowSquash bool
103103
AllowManualMerge bool
104104
AutodetectManualMerge bool
105+
DefaultMergeStyle MergeStyle
105106
}
106107

107108
// FromDB fills up a PullRequestsConfig from serialized format.
@@ -125,6 +126,15 @@ func (cfg *PullRequestsConfig) IsMergeStyleAllowed(mergeStyle MergeStyle) bool {
125126
mergeStyle == MergeStyleManuallyMerged && cfg.AllowManualMerge
126127
}
127128

129+
// GetDefaultMergeStyle returns the default merge style for this pull request
130+
func (cfg *PullRequestsConfig) GetDefaultMergeStyle() MergeStyle {
131+
if len(cfg.DefaultMergeStyle) != 0 {
132+
return cfg.DefaultMergeStyle
133+
}
134+
135+
return MergeStyleMerge
136+
}
137+
128138
// AllowedMergeStyleCount returns the total count of allowed merge styles for the PullRequestsConfig
129139
func (cfg *PullRequestsConfig) AllowedMergeStyleCount() int {
130140
count := 0

modules/convert/git_commit.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,13 @@ func ToCommit(repo *models.Repository, commit *git.Commit, userCache map[string]
8686
}
8787

8888
if ok {
89-
apiAuthor = ToUser(cacheAuthor, false, false)
89+
apiAuthor = ToUser(cacheAuthor, nil)
9090
} else {
9191
author, err := models.GetUserByEmail(commit.Author.Email)
9292
if err != nil && !models.IsErrUserNotExist(err) {
9393
return nil, err
9494
} else if err == nil {
95-
apiAuthor = ToUser(author, false, false)
95+
apiAuthor = ToUser(author, nil)
9696
if userCache != nil {
9797
userCache[commit.Author.Email] = author
9898
}
@@ -108,13 +108,13 @@ func ToCommit(repo *models.Repository, commit *git.Commit, userCache map[string]
108108
}
109109

110110
if ok {
111-
apiCommitter = ToUser(cacheCommitter, false, false)
111+
apiCommitter = ToUser(cacheCommitter, nil)
112112
} else {
113113
committer, err := models.GetUserByEmail(commit.Committer.Email)
114114
if err != nil && !models.IsErrUserNotExist(err) {
115115
return nil, err
116116
} else if err == nil {
117-
apiCommitter = ToUser(committer, false, false)
117+
apiCommitter = ToUser(committer, nil)
118118
if userCache != nil {
119119
userCache[commit.Committer.Email] = committer
120120
}

modules/convert/issue.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func ToAPIIssue(issue *models.Issue) *api.Issue {
3131
URL: issue.APIURL(),
3232
HTMLURL: issue.HTMLURL(),
3333
Index: issue.Index,
34-
Poster: ToUser(issue.Poster, false, false),
34+
Poster: ToUser(issue.Poster, nil),
3535
Title: issue.Title,
3636
Body: issue.Content,
3737
Ref: issue.Ref,
@@ -66,9 +66,9 @@ func ToAPIIssue(issue *models.Issue) *api.Issue {
6666
}
6767
if len(issue.Assignees) > 0 {
6868
for _, assignee := range issue.Assignees {
69-
apiIssue.Assignees = append(apiIssue.Assignees, ToUser(assignee, false, false))
69+
apiIssue.Assignees = append(apiIssue.Assignees, ToUser(assignee, nil))
7070
}
71-
apiIssue.Assignee = ToUser(issue.Assignees[0], false, false) // For compatibility, we're keeping the first assignee as `apiIssue.Assignee`
71+
apiIssue.Assignee = ToUser(issue.Assignees[0], nil) // For compatibility, we're keeping the first assignee as `apiIssue.Assignee`
7272
}
7373
if issue.IsPull {
7474
if err := issue.LoadPullRequest(); err != nil {

modules/convert/issue_comment.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
func ToComment(c *models.Comment) *api.Comment {
1414
return &api.Comment{
1515
ID: c.ID,
16-
Poster: ToUser(c.Poster, false, false),
16+
Poster: ToUser(c.Poster, nil),
1717
HTMLURL: c.HTMLURL(),
1818
IssueURL: c.IssueURL(),
1919
PRURL: c.PRURL(),

modules/convert/pull.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
159159
if pr.HasMerged {
160160
apiPullRequest.Merged = pr.MergedUnix.AsTimePtr()
161161
apiPullRequest.MergedCommitID = &pr.MergedCommitID
162-
apiPullRequest.MergedBy = ToUser(pr.Merger, false, false)
162+
apiPullRequest.MergedBy = ToUser(pr.Merger, nil)
163163
}
164164

165165
return apiPullRequest

modules/convert/pull_review.go

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,9 @@ func ToPullReview(r *models.Review, doer *models.User) (*api.PullReview, error)
2020
r.Reviewer = models.NewGhostUser()
2121
}
2222

23-
auth := false
24-
if doer != nil {
25-
auth = doer.IsAdmin || doer.ID == r.ReviewerID
26-
}
27-
2823
result := &api.PullReview{
2924
ID: r.ID,
30-
Reviewer: ToUser(r.Reviewer, doer != nil, auth),
25+
Reviewer: ToUser(r.Reviewer, doer),
3126
ReviewerTeam: ToTeam(r.ReviewerTeam),
3227
State: api.ReviewStateUnknown,
3328
Body: r.Content,
@@ -88,14 +83,10 @@ func ToPullReviewCommentList(review *models.Review, doer *models.User) ([]*api.P
8883
for _, lines := range review.CodeComments {
8984
for _, comments := range lines {
9085
for _, comment := range comments {
91-
auth := false
92-
if doer != nil {
93-
auth = doer.IsAdmin || doer.ID == comment.Poster.ID
94-
}
9586
apiComment := &api.PullReviewComment{
9687
ID: comment.ID,
9788
Body: comment.Content,
98-
Reviewer: ToUser(comment.Poster, doer != nil, auth),
89+
Reviewer: ToUser(comment.Poster, doer),
9990
ReviewID: review.ID,
10091
Created: comment.CreatedUnix.AsTime(),
10192
Updated: comment.UpdatedUnix.AsTime(),

modules/convert/release.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func ToRelease(r *models.Release) *api.Release {
2929
IsPrerelease: r.IsPrerelease,
3030
CreatedAt: r.CreatedUnix.AsTime(),
3131
PublishedAt: r.CreatedUnix.AsTime(),
32-
Publisher: ToUser(r.Publisher, false, false),
32+
Publisher: ToUser(r.Publisher, nil),
3333
Attachments: assets,
3434
}
3535
}

modules/convert/repository.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ func innerToRepo(repo *models.Repository, mode models.AccessMode, isParent bool)
7171
allowRebase := false
7272
allowRebaseMerge := false
7373
allowSquash := false
74+
defaultMergeStyle := models.MergeStyleMerge
7475
if unit, err := repo.GetUnit(models.UnitTypePullRequests); err == nil {
7576
config := unit.PullRequestsConfig()
7677
hasPullRequests = true
@@ -79,6 +80,7 @@ func innerToRepo(repo *models.Repository, mode models.AccessMode, isParent bool)
7980
allowRebase = config.AllowRebase
8081
allowRebaseMerge = config.AllowRebaseMerge
8182
allowSquash = config.AllowSquash
83+
defaultMergeStyle = config.GetDefaultMergeStyle()
8284
}
8385
hasProjects := false
8486
if _, err := repo.GetUnit(models.UnitTypeProjects); err == nil {
@@ -100,7 +102,7 @@ func innerToRepo(repo *models.Repository, mode models.AccessMode, isParent bool)
100102

101103
return &api.Repository{
102104
ID: repo.ID,
103-
Owner: ToUser(repo.Owner, mode != models.AccessModeNone, mode >= models.AccessModeAdmin),
105+
Owner: ToUserWithAccessMode(repo.Owner, mode),
104106
Name: repo.Name,
105107
FullName: repo.FullName(),
106108
Description: repo.Description,
@@ -139,6 +141,7 @@ func innerToRepo(repo *models.Repository, mode models.AccessMode, isParent bool)
139141
AllowRebase: allowRebase,
140142
AllowRebaseMerge: allowRebaseMerge,
141143
AllowSquash: allowSquash,
144+
DefaultMergeStyle: string(defaultMergeStyle),
142145
AvatarURL: repo.AvatarLink(),
143146
Internal: !repo.IsPrivate && repo.Owner.Visibility == api.VisibleTypePrivate,
144147
MirrorInterval: mirrorInterval,

modules/convert/status.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func ToCommitStatus(status *models.CommitStatus) *api.CommitStatus {
2424

2525
if status.CreatorID != 0 {
2626
creator, _ := models.GetUserByID(status.CreatorID)
27-
apiStatus.Creator = ToUser(creator, false, false)
27+
apiStatus.Creator = ToUser(creator, nil)
2828
}
2929

3030
return apiStatus

modules/convert/user.go

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,32 @@ import (
1111
)
1212

1313
// ToUser convert models.User to api.User
14-
// signed shall only be set if requester is logged in. authed shall only be set if user is site admin or user himself
15-
func ToUser(user *models.User, signed, authed bool) *api.User {
14+
// if doer is set, private information is added if the doer has the permission to see it
15+
func ToUser(user, doer *models.User) *api.User {
16+
if user == nil {
17+
return nil
18+
}
19+
authed := false
20+
signed := false
21+
if doer != nil {
22+
signed = true
23+
authed = doer.ID == user.ID || doer.IsAdmin
24+
}
25+
return toUser(user, signed, authed)
26+
}
27+
28+
// ToUserWithAccessMode convert models.User to api.User
29+
// AccessMode is not none show add some more information
30+
func ToUserWithAccessMode(user *models.User, accessMode models.AccessMode) *api.User {
1631
if user == nil {
1732
return nil
1833
}
34+
return toUser(user, accessMode != models.AccessModeNone, false)
35+
}
36+
37+
// toUser convert models.User to api.User
38+
// signed shall only be set if requester is logged in. authed shall only be set if user is site admin or user himself
39+
func toUser(user *models.User, signed, authed bool) *api.User {
1940
result := &api.User{
2041
ID: user.ID,
2142
UserName: user.Name,

modules/convert/user_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ func TestUser_ToUser(t *testing.T) {
1515

1616
user1 := models.AssertExistsAndLoadBean(t, &models.User{ID: 1, IsAdmin: true}).(*models.User)
1717

18-
apiUser := ToUser(user1, true, true)
18+
apiUser := toUser(user1, true, true)
1919
assert.True(t, apiUser.IsAdmin)
2020

2121
user2 := models.AssertExistsAndLoadBean(t, &models.User{ID: 2, IsAdmin: false}).(*models.User)
2222

23-
apiUser = ToUser(user2, true, true)
23+
apiUser = toUser(user2, true, true)
2424
assert.False(t, apiUser.IsAdmin)
2525

26-
apiUser = ToUser(user1, false, false)
26+
apiUser = toUser(user1, false, false)
2727
assert.False(t, apiUser.IsAdmin)
2828
}

modules/forms/repo_form.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ type RepoSettingForm struct {
140140
PullsAllowRebaseMerge bool
141141
PullsAllowSquash bool
142142
PullsAllowManualMerge bool
143+
PullsDefaultMergeStyle string
143144
EnableAutodetectManualMerge bool
144145
EnableTimetracker bool
145146
AllowOnlyContributorsToTrackTime bool

0 commit comments

Comments
 (0)