@@ -122,76 +122,41 @@ func createCodeComment(doer *models.User, repo *models.Repository, issue *models
122
122
}
123
123
defer gitRepo .Close ()
124
124
125
- invalidated := false
126
- head := pr .GetGitRefName ()
125
+ // FIXME validate treePath
126
+ // Get latest commit referencing the commented line
127
+ // No need for get commit for base branch changes
127
128
if line > 0 {
128
- if reviewID != 0 {
129
- first , err := models .FindComments (models.FindCommentsOptions {
130
- ReviewID : reviewID ,
131
- Line : line ,
132
- TreePath : treePath ,
133
- Type : models .CommentTypeCode ,
134
- ListOptions : models.ListOptions {
135
- PageSize : 1 ,
136
- Page : 1 ,
137
- },
138
- })
139
- if err == nil && len (first ) > 0 {
140
- commitID = first [0 ].CommitSHA
141
- invalidated = first [0 ].Invalidated
142
- patch = first [0 ].Patch
143
- } else if err != nil && ! models .IsErrCommentNotExist (err ) {
144
- return nil , fmt .Errorf ("Find first comment for %d line %d path %s. Error: %v" , reviewID , line , treePath , err )
145
- } else {
146
- review , err := models .GetReviewByID (reviewID )
147
- if err == nil && len (review .CommitID ) > 0 {
148
- head = review .CommitID
149
- } else if err != nil && ! models .IsErrReviewNotExist (err ) {
150
- return nil , fmt .Errorf ("GetReviewByID %d. Error: %v" , reviewID , err )
151
- }
152
- }
153
- }
154
-
155
- if len (commitID ) == 0 {
156
- // FIXME validate treePath
157
- // Get latest commit referencing the commented line
158
- // No need for get commit for base branch changes
159
- commit , err := gitRepo .LineBlame (head , gitRepo .Path , treePath , uint (line ))
160
- if err == nil {
161
- commitID = commit .ID .String ()
162
- } else if ! (strings .Contains (err .Error (), "exit status 128 - fatal: no such path" ) || notEnoughLines .MatchString (err .Error ())) {
163
- return nil , fmt .Errorf ("LineBlame[%s, %s, %s, %d]: %v" , pr .GetGitRefName (), gitRepo .Path , treePath , line , err )
164
- }
129
+ commit , err := gitRepo .LineBlame (pr .GetGitRefName (), gitRepo .Path , treePath , uint (line ))
130
+ if err == nil {
131
+ commitID = commit .ID .String ()
132
+ } else if ! (strings .Contains (err .Error (), "exit status 128 - fatal: no such path" ) || notEnoughLines .MatchString (err .Error ())) {
133
+ return nil , fmt .Errorf ("LineBlame[%s, %s, %s, %d]: %v" , pr .GetGitRefName (), gitRepo .Path , treePath , line , err )
165
134
}
166
135
}
167
136
168
137
// Only fetch diff if comment is review comment
169
- if len (patch ) == 0 && reviewID != 0 {
170
- if len (commitID ) == 0 {
171
- commitID , err = gitRepo .GetRefCommitID (pr .GetGitRefName ())
172
- if err != nil {
173
- return nil , fmt .Errorf ("GetRefCommitID[%s]: %v" , pr .GetGitRefName (), err )
174
- }
138
+ if reviewID != 0 {
139
+ headCommitID , err := gitRepo .GetRefCommitID (pr .GetGitRefName ())
140
+ if err != nil {
141
+ return nil , fmt .Errorf ("GetRefCommitID[%s]: %v" , pr .GetGitRefName (), err )
175
142
}
176
-
177
143
patchBuf := new (bytes.Buffer )
178
- if err := git .GetRepoRawDiffForFile (gitRepo , pr .MergeBase , commitID , git .RawDiffNormal , treePath , patchBuf ); err != nil {
179
- return nil , fmt .Errorf ("GetRawDiffForLine[%s, %s, %s, %s]: %v" , gitRepo .Path , pr .MergeBase , commitID , treePath , err )
144
+ if err := git .GetRepoRawDiffForFile (gitRepo , pr .MergeBase , headCommitID , git .RawDiffNormal , treePath , patchBuf ); err != nil {
145
+ return nil , fmt .Errorf ("GetRawDiffForLine[%s, %s, %s, %s]: %v" , err , gitRepo .Path , pr .MergeBase , headCommitID , treePath )
180
146
}
181
147
patch = git .CutDiffAroundLine (patchBuf , int64 ((& models.Comment {Line : line }).UnsignedLine ()), line < 0 , setting .UI .CodeCommentLines )
182
148
}
183
149
return models .CreateComment (& models.CreateCommentOptions {
184
- Type : models .CommentTypeCode ,
185
- Doer : doer ,
186
- Repo : repo ,
187
- Issue : issue ,
188
- Content : content ,
189
- LineNum : line ,
190
- TreePath : treePath ,
191
- CommitSHA : commitID ,
192
- ReviewID : reviewID ,
193
- Patch : patch ,
194
- Invalidated : invalidated ,
150
+ Type : models .CommentTypeCode ,
151
+ Doer : doer ,
152
+ Repo : repo ,
153
+ Issue : issue ,
154
+ Content : content ,
155
+ LineNum : line ,
156
+ TreePath : treePath ,
157
+ CommitSHA : commitID ,
158
+ ReviewID : reviewID ,
159
+ Patch : patch ,
195
160
})
196
161
}
197
162
0 commit comments