@@ -66,7 +66,6 @@ type PullRequest struct {
66
66
HeadRepo * Repository `xorm:"-"`
67
67
BaseRepoID int64 `xorm:"INDEX"`
68
68
BaseRepo * Repository `xorm:"-"`
69
- HeadUserName string
70
69
HeadBranch string
71
70
BaseBranch string
72
71
ProtectedBranch * ProtectedBranch `xorm:"-"`
@@ -79,6 +78,15 @@ type PullRequest struct {
79
78
MergedUnix timeutil.TimeStamp `xorm:"updated INDEX"`
80
79
}
81
80
81
+ // MustHeadUserName returns the HeadRepo's username if failed return blank
82
+ func (pr * PullRequest ) MustHeadUserName () string {
83
+ if err := pr .LoadHeadRepo (); err != nil {
84
+ log .Error ("LoadHeadRepo: %v" , err )
85
+ return ""
86
+ }
87
+ return pr .HeadRepo .MustOwnerName ()
88
+ }
89
+
82
90
// Note: don't try to get Issue because will end up recursive querying.
83
91
func (pr * PullRequest ) loadAttributes (e Engine ) (err error ) {
84
92
if pr .HasMerged && pr .Merger == nil {
@@ -102,6 +110,10 @@ func (pr *PullRequest) LoadAttributes() error {
102
110
// LoadBaseRepo loads pull request base repository from database
103
111
func (pr * PullRequest ) LoadBaseRepo () error {
104
112
if pr .BaseRepo == nil {
113
+ if pr .HeadRepoID == pr .BaseRepoID && pr .HeadRepo != nil {
114
+ pr .BaseRepo = pr .HeadRepo
115
+ return nil
116
+ }
105
117
var repo Repository
106
118
if has , err := x .ID (pr .BaseRepoID ).Get (& repo ); err != nil {
107
119
return err
@@ -113,6 +125,24 @@ func (pr *PullRequest) LoadBaseRepo() error {
113
125
return nil
114
126
}
115
127
128
+ // LoadHeadRepo loads pull request head repository from database
129
+ func (pr * PullRequest ) LoadHeadRepo () error {
130
+ if pr .HeadRepo == nil {
131
+ if pr .HeadRepoID == pr .BaseRepoID && pr .BaseRepo != nil {
132
+ pr .HeadRepo = pr .BaseRepo
133
+ return nil
134
+ }
135
+ var repo Repository
136
+ if has , err := x .ID (pr .HeadRepoID ).Get (& repo ); err != nil {
137
+ return err
138
+ } else if ! has {
139
+ return ErrRepoNotExist {ID : pr .BaseRepoID }
140
+ }
141
+ pr .HeadRepo = & repo
142
+ }
143
+ return nil
144
+ }
145
+
116
146
// LoadIssue loads issue information from database
117
147
func (pr * PullRequest ) LoadIssue () (err error ) {
118
148
return pr .loadIssue (x )
@@ -152,7 +182,7 @@ func (pr *PullRequest) GetDefaultMergeMessage() string {
152
182
return ""
153
183
}
154
184
}
155
- return fmt .Sprintf ("Merge branch '%s' of %s/%s into %s" , pr .HeadBranch , pr .HeadUserName , pr .HeadRepo .Name , pr .BaseBranch )
185
+ return fmt .Sprintf ("Merge branch '%s' of %s/%s into %s" , pr .HeadBranch , pr .MustHeadUserName () , pr .HeadRepo .Name , pr .BaseBranch )
156
186
}
157
187
158
188
// GetDefaultSquashMessage returns default message used when squash and merging pull request
@@ -1159,18 +1189,6 @@ func checkForInvalidation(requests PullRequestList, repoID int64, doer *User, br
1159
1189
return nil
1160
1190
}
1161
1191
1162
- // ChangeUsernameInPullRequests changes the name of head_user_name
1163
- func ChangeUsernameInPullRequests (oldUserName , newUserName string ) error {
1164
- pr := PullRequest {
1165
- HeadUserName : strings .ToLower (newUserName ),
1166
- }
1167
- _ , err := x .
1168
- Cols ("head_user_name" ).
1169
- Where ("head_user_name = ?" , strings .ToLower (oldUserName )).
1170
- Update (pr )
1171
- return err
1172
- }
1173
-
1174
1192
// checkAndUpdateStatus checks if pull request is possible to leaving checking status,
1175
1193
// and set to be either conflict or mergeable.
1176
1194
func (pr * PullRequest ) checkAndUpdateStatus () {
0 commit comments