@@ -30,28 +30,86 @@ func ToEmail(email *models.EmailAddress) *api.Email {
30
30
}
31
31
32
32
// ToBranch convert a git.Commit and git.Branch to an api.Branch
33
- func ToBranch (repo * models.Repository , b * git.Branch , c * git.Commit , bp * models.ProtectedBranch , user * models.User ) * api.Branch {
33
+ func ToBranch (repo * models.Repository , b * git.Branch , c * git.Commit , bp * models.ProtectedBranch , user * models.User , isRepoAdmin bool ) * api.Branch {
34
34
if bp == nil {
35
35
return & api.Branch {
36
- Name : b .Name ,
37
- Commit : ToCommit (repo , c ),
38
- Protected : false ,
39
- RequiredApprovals : 0 ,
40
- EnableStatusCheck : false ,
41
- StatusCheckContexts : []string {},
42
- UserCanPush : true ,
43
- UserCanMerge : true ,
36
+ Name : b .Name ,
37
+ Commit : ToCommit (repo , c ),
38
+ Protected : false ,
39
+ RequiredApprovals : 0 ,
40
+ EnableStatusCheck : false ,
41
+ StatusCheckContexts : []string {},
42
+ UserCanPush : true ,
43
+ UserCanMerge : true ,
44
+ EffectiveBranchProtectionName : "" ,
44
45
}
45
46
}
47
+ branchProtectionName := ""
48
+ if isRepoAdmin {
49
+ branchProtectionName = bp .BranchName
50
+ }
51
+
46
52
return & api.Branch {
47
- Name : b .Name ,
48
- Commit : ToCommit (repo , c ),
49
- Protected : true ,
50
- RequiredApprovals : bp .RequiredApprovals ,
51
- EnableStatusCheck : bp .EnableStatusCheck ,
52
- StatusCheckContexts : bp .StatusCheckContexts ,
53
- UserCanPush : bp .CanUserPush (user .ID ),
54
- UserCanMerge : bp .IsUserMergeWhitelisted (user .ID ),
53
+ Name : b .Name ,
54
+ Commit : ToCommit (repo , c ),
55
+ Protected : true ,
56
+ RequiredApprovals : bp .RequiredApprovals ,
57
+ EnableStatusCheck : bp .EnableStatusCheck ,
58
+ StatusCheckContexts : bp .StatusCheckContexts ,
59
+ UserCanPush : bp .CanUserPush (user .ID ),
60
+ UserCanMerge : bp .IsUserMergeWhitelisted (user .ID ),
61
+ EffectiveBranchProtectionName : branchProtectionName ,
62
+ }
63
+ }
64
+
65
+ // ToBranchProtection convert a ProtectedBranch to api.BranchProtection
66
+ func ToBranchProtection (bp * models.ProtectedBranch ) * api.BranchProtection {
67
+ pushWhitelistUsernames , err := models .GetUserNamesByIDs (bp .WhitelistUserIDs )
68
+ if err != nil {
69
+ log .Error ("GetUserNamesByIDs (WhitelistUserIDs): %v" , err )
70
+ }
71
+ mergeWhitelistUsernames , err := models .GetUserNamesByIDs (bp .MergeWhitelistUserIDs )
72
+ if err != nil {
73
+ log .Error ("GetUserNamesByIDs (MergeWhitelistUserIDs): %v" , err )
74
+ }
75
+ approvalsWhitelistUsernames , err := models .GetUserNamesByIDs (bp .ApprovalsWhitelistUserIDs )
76
+ if err != nil {
77
+ log .Error ("GetUserNamesByIDs (ApprovalsWhitelistUserIDs): %v" , err )
78
+ }
79
+ pushWhitelistTeams , err := models .GetTeamNamesByID (bp .WhitelistTeamIDs )
80
+ if err != nil {
81
+ log .Error ("GetTeamNamesByID (WhitelistTeamIDs): %v" , err )
82
+ }
83
+ mergeWhitelistTeams , err := models .GetTeamNamesByID (bp .MergeWhitelistTeamIDs )
84
+ if err != nil {
85
+ log .Error ("GetTeamNamesByID (MergeWhitelistTeamIDs): %v" , err )
86
+ }
87
+ approvalsWhitelistTeams , err := models .GetTeamNamesByID (bp .ApprovalsWhitelistTeamIDs )
88
+ if err != nil {
89
+ log .Error ("GetTeamNamesByID (ApprovalsWhitelistTeamIDs): %v" , err )
90
+ }
91
+
92
+ return & api.BranchProtection {
93
+ BranchName : bp .BranchName ,
94
+ EnablePush : bp .CanPush ,
95
+ EnablePushWhitelist : bp .EnableWhitelist ,
96
+ PushWhitelistUsernames : pushWhitelistUsernames ,
97
+ PushWhitelistTeams : pushWhitelistTeams ,
98
+ PushWhitelistDeployKeys : bp .WhitelistDeployKeys ,
99
+ EnableMergeWhitelist : bp .EnableMergeWhitelist ,
100
+ MergeWhitelistUsernames : mergeWhitelistUsernames ,
101
+ MergeWhitelistTeams : mergeWhitelistTeams ,
102
+ EnableStatusCheck : bp .EnableStatusCheck ,
103
+ StatusCheckContexts : bp .StatusCheckContexts ,
104
+ RequiredApprovals : bp .RequiredApprovals ,
105
+ EnableApprovalsWhitelist : bp .EnableApprovalsWhitelist ,
106
+ ApprovalsWhitelistUsernames : approvalsWhitelistUsernames ,
107
+ ApprovalsWhitelistTeams : approvalsWhitelistTeams ,
108
+ BlockOnRejectedReviews : bp .BlockOnRejectedReviews ,
109
+ DismissStaleApprovals : bp .DismissStaleApprovals ,
110
+ RequireSignedCommits : bp .RequireSignedCommits ,
111
+ Created : bp .CreatedUnix .AsTime (),
112
+ Updated : bp .UpdatedUnix .AsTime (),
55
113
}
56
114
}
57
115
0 commit comments