aboutsummaryrefslogtreecommitdiffstats
path: root/services/pull
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2023-01-19 22:31:44 +0000
committerGitHub <noreply@github.com>2023-01-19 17:31:44 -0500
commit4199d28053b228376a68a957297f332026fafa4e (patch)
tree225702fd4f01432ada95f186c2b4b664354214a2 /services/pull
parentb383652e02294796fdab7270e2cdb5a0d7413511 (diff)
downloadgitea-4199d28053b228376a68a957297f332026fafa4e.tar.gz
gitea-4199d28053b228376a68a957297f332026fafa4e.zip
When updating by rebase we need to set the environment for head repo (#22535)
The update by rebase code reuses the merge code but shortcircuits and pushes back up to the head. However, it doesn't set the correct pushing environment - and just uses the same environment as the base repo. This leads to the push update failing and thence the PR becomes out-of-sync with the head. This PR fixes this and adjusts the trace logging elsewhere to help make this clearer. Fix #18802 Signed-off-by: Andrew Thornton <art27@cantab.net> Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: John Olheiser <john.olheiser@gmail.com>
Diffstat (limited to 'services/pull')
-rw-r--r--services/pull/merge.go22
1 files changed, 14 insertions, 8 deletions
diff --git a/services/pull/merge.go b/services/pull/merge.go
index d0ec943cfa..bdd2cb0e86 100644
--- a/services/pull/merge.go
+++ b/services/pull/merge.go
@@ -595,19 +595,25 @@ func rawMerge(ctx context.Context, pr *issues_model.PullRequest, doer *user_mode
headUser = pr.HeadRepo.Owner
}
- env = repo_module.FullPushingEnvironment(
- headUser,
- doer,
- pr.BaseRepo,
- pr.BaseRepo.Name,
- pr.ID,
- )
-
var pushCmd *git.Command
if mergeStyle == repo_model.MergeStyleRebaseUpdate {
// force push the rebase result to head branch
+ env = repo_module.FullPushingEnvironment(
+ headUser,
+ doer,
+ pr.HeadRepo,
+ pr.HeadRepo.Name,
+ pr.ID,
+ )
pushCmd = git.NewCommand(ctx, "push", "-f", "head_repo").AddDynamicArguments(stagingBranch + ":" + git.BranchPrefix + pr.HeadBranch)
} else {
+ env = repo_module.FullPushingEnvironment(
+ headUser,
+ doer,
+ pr.BaseRepo,
+ pr.BaseRepo.Name,
+ pr.ID,
+ )
pushCmd = git.NewCommand(ctx, "push", "origin").AddDynamicArguments(baseBranch + ":" + git.BranchPrefix + pr.BaseBranch)
}