@@ -122,76 +122,41 @@ func createCodeComment(doer *models.User, repo *models.Repository, issue *models
122122 }
123123 defer gitRepo .Close ()
124124
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
127128 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 )
165134 }
166135 }
167136
168137 // 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 )
175142 }
176-
177143 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 )
180146 }
181147 patch = git .CutDiffAroundLine (patchBuf , int64 ((& models.Comment {Line : line }).UnsignedLine ()), line < 0 , setting .UI .CodeCommentLines )
182148 }
183149 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 ,
195160 })
196161}
197162
0 commit comments