@@ -51,29 +51,31 @@ func ToAPIPullRequest(ctx context.Context, pr *issues_model.PullRequest, doer *u
5151 }
5252
5353 apiPullRequest := & api.PullRequest {
54- ID : pr .ID ,
55- URL : pr .Issue .HTMLURL (),
56- Index : pr .Index ,
57- Poster : apiIssue .Poster ,
58- Title : apiIssue .Title ,
59- Body : apiIssue .Body ,
60- Labels : apiIssue .Labels ,
61- Milestone : apiIssue .Milestone ,
62- Assignee : apiIssue .Assignee ,
63- Assignees : apiIssue .Assignees ,
64- State : apiIssue .State ,
65- IsLocked : apiIssue .IsLocked ,
66- Comments : apiIssue .Comments ,
67- HTMLURL : pr .Issue .HTMLURL (),
68- DiffURL : pr .Issue .DiffURL (),
69- PatchURL : pr .Issue .PatchURL (),
70- HasMerged : pr .HasMerged ,
71- MergeBase : pr .MergeBase ,
72- Mergeable : pr .Mergeable (ctx ),
73- Deadline : apiIssue .Deadline ,
74- Created : pr .Issue .CreatedUnix .AsTimePtr (),
75- Updated : pr .Issue .UpdatedUnix .AsTimePtr (),
76- PinOrder : apiIssue .PinOrder ,
54+ ID : pr .ID ,
55+ URL : pr .Issue .HTMLURL (),
56+ Index : pr .Index ,
57+ Poster : apiIssue .Poster ,
58+ Title : apiIssue .Title ,
59+ Body : apiIssue .Body ,
60+ Labels : apiIssue .Labels ,
61+ Milestone : apiIssue .Milestone ,
62+ Assignee : apiIssue .Assignee ,
63+ Assignees : apiIssue .Assignees ,
64+ State : apiIssue .State ,
65+ Draft : pr .IsWorkInProgress (ctx ),
66+ IsLocked : apiIssue .IsLocked ,
67+ Comments : apiIssue .Comments ,
68+ ReviewComments : pr .GetReviewCommentsCount (ctx ),
69+ HTMLURL : pr .Issue .HTMLURL (),
70+ DiffURL : pr .Issue .DiffURL (),
71+ PatchURL : pr .Issue .PatchURL (),
72+ HasMerged : pr .HasMerged ,
73+ MergeBase : pr .MergeBase ,
74+ Mergeable : pr .Mergeable (ctx ),
75+ Deadline : apiIssue .Deadline ,
76+ Created : pr .Issue .CreatedUnix .AsTimePtr (),
77+ Updated : pr .Issue .UpdatedUnix .AsTimePtr (),
78+ PinOrder : apiIssue .PinOrder ,
7779
7880 AllowMaintainerEdit : pr .AllowMaintainerEdit ,
7981
@@ -168,6 +170,12 @@ func ToAPIPullRequest(ctx context.Context, pr *issues_model.PullRequest, doer *u
168170 return nil
169171 }
170172
173+ // Outer scope variables to be used in diff calculation
174+ var (
175+ startCommitID string
176+ endCommitID string
177+ )
178+
171179 if git .IsErrBranchNotExist (err ) {
172180 headCommitID , err := headGitRepo .GetRefCommitID (apiPullRequest .Head .Ref )
173181 if err != nil && ! git .IsErrNotExist (err ) {
@@ -176,6 +184,7 @@ func ToAPIPullRequest(ctx context.Context, pr *issues_model.PullRequest, doer *u
176184 }
177185 if err == nil {
178186 apiPullRequest .Head .Sha = headCommitID
187+ endCommitID = headCommitID
179188 }
180189 } else {
181190 commit , err := headBranch .GetCommit ()
@@ -186,8 +195,17 @@ func ToAPIPullRequest(ctx context.Context, pr *issues_model.PullRequest, doer *u
186195 if err == nil {
187196 apiPullRequest .Head .Ref = pr .HeadBranch
188197 apiPullRequest .Head .Sha = commit .ID .String ()
198+ endCommitID = commit .ID .String ()
189199 }
190200 }
201+
202+ // Calculate diff
203+ startCommitID = pr .MergeBase
204+
205+ apiPullRequest .ChangedFiles , apiPullRequest .Additions , apiPullRequest .Deletions , err = gitRepo .GetDiffShortStat (startCommitID , endCommitID )
206+ if err != nil {
207+ log .Error ("GetDiffShortStat: %v" , err )
208+ }
191209 }
192210
193211 if len (apiPullRequest .Head .Sha ) == 0 && len (apiPullRequest .Head .Ref ) != 0 {
0 commit comments