From 119173130af174e12bb3dcd6d3b88b3f7d5e9798 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E6=99=BA=E8=B6=85?= <1012112796@qq.com>
Date: Sat, 9 May 2020 02:50:23 +0800
Subject: [PATCH] Add default CommitID for create pull review api (#11334)

If user create pull review through api but not set CommitID,
I think it's necessary to use last headCommitID as default seting,
or this review will be considered as stale review which is wrong

Signed-off-by: a1012112796 <1012112796@qq.com>
---
 routers/api/v1/repo/pull_review.go | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/routers/api/v1/repo/pull_review.go b/routers/api/v1/repo/pull_review.go
index b3772b00a9..44559d70ed 100644
--- a/routers/api/v1/repo/pull_review.go
+++ b/routers/api/v1/repo/pull_review.go
@@ -12,6 +12,7 @@ import (
 	"code.gitea.io/gitea/models"
 	"code.gitea.io/gitea/modules/context"
 	"code.gitea.io/gitea/modules/convert"
+	"code.gitea.io/gitea/modules/git"
 	api "code.gitea.io/gitea/modules/structs"
 	"code.gitea.io/gitea/routers/api/v1/utils"
 	pull_service "code.gitea.io/gitea/services/pull"
@@ -313,6 +314,24 @@ func CreatePullReview(ctx *context.APIContext, opts api.CreatePullReviewOptions)
 		return
 	}
 
+	// if CommitID is empty, set it as lastCommitID
+	if opts.CommitID == "" {
+		gitRepo, err := git.OpenRepository(pr.Issue.Repo.RepoPath())
+		if err != nil {
+			ctx.ServerError("git.OpenRepository", err)
+			return
+		}
+		defer gitRepo.Close()
+
+		headCommitID, err := gitRepo.GetRefCommitID(pr.GetGitRefName())
+		if err != nil {
+			ctx.ServerError("GetRefCommitID", err)
+			return
+		}
+
+		opts.CommitID = headCommitID
+	}
+
 	// create review comments
 	for _, c := range opts.Comments {
 		line := c.NewLineNum