summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-10-18 19:13:31 +0800
committerGitHub <noreply@github.com>2019-10-18 19:13:31 +0800
commit945f121262ef5a393d9530b62a82b2c141bbe21c (patch)
tree13d4d91da9a75295ee3455ff183a61c4d3fbb3ad /routers
parentfecd8f949dedac0751db99dec590ff12ae56818d (diff)
downloadgitea-945f121262ef5a393d9530b62a82b2c141bbe21c.tar.gz
gitea-945f121262ef5a393d9530b62a82b2c141bbe21c.zip
Fix bug on pull requests when transfer head repository (#8564)
* fix bug on pull requests when transfer head repository * add migration and fix lint * fix tests and add a cache check on LoadBaseRepo
Diffstat (limited to 'routers')
-rw-r--r--routers/api/v1/repo/pull.go19
-rw-r--r--routers/repo/pull.go31
2 files changed, 24 insertions, 26 deletions
diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go
index 978c8a3f1f..16ddd10c60 100644
--- a/routers/api/v1/repo/pull.go
+++ b/routers/api/v1/repo/pull.go
@@ -190,7 +190,7 @@ func CreatePullRequest(ctx *context.APIContext, form api.CreatePullRequestOption
)
// Get repo/branch information
- headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch := parseCompareInfo(ctx, form)
+ _, headRepo, headGitRepo, compareInfo, baseBranch, headBranch := parseCompareInfo(ctx, form)
if ctx.Written() {
return
}
@@ -265,15 +265,14 @@ func CreatePullRequest(ctx *context.APIContext, form api.CreatePullRequestOption
DeadlineUnix: deadlineUnix,
}
pr := &models.PullRequest{
- HeadRepoID: headRepo.ID,
- BaseRepoID: repo.ID,
- HeadUserName: headUser.Name,
- HeadBranch: headBranch,
- BaseBranch: baseBranch,
- HeadRepo: headRepo,
- BaseRepo: repo,
- MergeBase: compareInfo.MergeBase,
- Type: models.PullRequestGitea,
+ HeadRepoID: headRepo.ID,
+ BaseRepoID: repo.ID,
+ HeadBranch: headBranch,
+ BaseBranch: baseBranch,
+ HeadRepo: headRepo,
+ BaseRepo: repo,
+ MergeBase: compareInfo.MergeBase,
+ Type: models.PullRequestGitea,
}
// Get all assignee IDs
diff --git a/routers/repo/pull.go b/routers/repo/pull.go
index 8b97e55670..4001e3a4f8 100644
--- a/routers/repo/pull.go
+++ b/routers/repo/pull.go
@@ -272,12 +272,12 @@ func checkPullInfo(ctx *context.Context) *models.Issue {
}
func setMergeTarget(ctx *context.Context, pull *models.PullRequest) {
- if ctx.Repo.Owner.Name == pull.HeadUserName {
+ if ctx.Repo.Owner.Name == pull.MustHeadUserName() {
ctx.Data["HeadTarget"] = pull.HeadBranch
} else if pull.HeadRepo == nil {
- ctx.Data["HeadTarget"] = pull.HeadUserName + ":" + pull.HeadBranch
+ ctx.Data["HeadTarget"] = pull.MustHeadUserName() + ":" + pull.HeadBranch
} else {
- ctx.Data["HeadTarget"] = pull.HeadUserName + "/" + pull.HeadRepo.Name + ":" + pull.HeadBranch
+ ctx.Data["HeadTarget"] = pull.MustHeadUserName() + "/" + pull.HeadRepo.Name + ":" + pull.HeadBranch
}
ctx.Data["BaseTarget"] = pull.BaseBranch
}
@@ -440,7 +440,7 @@ func ViewPullCommits(ctx *context.Context) {
ctx.NotFound("ViewPullCommits", nil)
return
}
- ctx.Data["Username"] = pull.HeadUserName
+ ctx.Data["Username"] = pull.MustHeadUserName()
ctx.Data["Reponame"] = pull.HeadRepo.Name
commits = prInfo.Commits
}
@@ -512,7 +512,7 @@ func ViewPullFiles(ctx *context.Context) {
return
}
- headRepoPath := models.RepoPath(pull.HeadUserName, pull.HeadRepo.Name)
+ headRepoPath := pull.HeadRepo.RepoPath()
headGitRepo, err := git.OpenRepository(headRepoPath)
if err != nil {
@@ -531,8 +531,8 @@ func ViewPullFiles(ctx *context.Context) {
endCommitID = headCommitID
gitRepo = headGitRepo
- headTarget = path.Join(pull.HeadUserName, pull.HeadRepo.Name)
- ctx.Data["Username"] = pull.HeadUserName
+ headTarget = path.Join(pull.MustHeadUserName(), pull.HeadRepo.Name)
+ ctx.Data["Username"] = pull.MustHeadUserName()
ctx.Data["Reponame"] = pull.HeadRepo.Name
}
@@ -754,15 +754,14 @@ func CompareAndPullRequestPost(ctx *context.Context, form auth.CreateIssueForm)
Content: form.Content,
}
pullRequest := &models.PullRequest{
- HeadRepoID: headRepo.ID,
- BaseRepoID: repo.ID,
- HeadUserName: headUser.Name,
- HeadBranch: headBranch,
- BaseBranch: baseBranch,
- HeadRepo: headRepo,
- BaseRepo: repo,
- MergeBase: prInfo.MergeBase,
- Type: models.PullRequestGitea,
+ HeadRepoID: headRepo.ID,
+ BaseRepoID: repo.ID,
+ HeadBranch: headBranch,
+ BaseBranch: baseBranch,
+ HeadRepo: headRepo,
+ BaseRepo: repo,
+ MergeBase: prInfo.MergeBase,
+ Type: models.PullRequestGitea,
}
// FIXME: check error in the case two people send pull request at almost same time, give nice error prompt
// instead of 500.