mirror of
https://github.com/go-gitea/gitea.git
synced 2026-09-20 19:53:41 +09:00
fix(repo): surface unrelated histories on Sync Fork (#39258)
Sync Fork already maps merge conflicts to a JSON error. Unrelated histories still went through `ServerError`, so the UI showed a 500 HTML snippet instead of the same user-facing message PR merge already uses (`repo.pulls.unrelated_histories`). The API path returned 500 for the same git error; PR merge returns 409. Match that. Fixes #36772 AI assistance was used to locate the handler gap and draft the mapping. I reviewed and take responsibility for the change. Signed-off-by: Zhaoqi Xu <lzy00419@outlook.com>
This commit is contained in:
@@ -1331,6 +1331,8 @@ func MergeUpstream(ctx *context.APIContext) {
|
|||||||
// "$ref": "#/responses/error"
|
// "$ref": "#/responses/error"
|
||||||
// "404":
|
// "404":
|
||||||
// "$ref": "#/responses/notFound"
|
// "$ref": "#/responses/notFound"
|
||||||
|
// "409":
|
||||||
|
// "$ref": "#/responses/error"
|
||||||
form := web.GetForm[*api.MergeUpstreamRequest](ctx)
|
form := web.GetForm[*api.MergeUpstreamRequest](ctx)
|
||||||
mergeStyle, err := repo_service.MergeUpstream(ctx, ctx.Doer, ctx.Repo.Repository, form.Branch, form.FfOnly)
|
mergeStyle, err := repo_service.MergeUpstream(ctx, ctx.Doer, ctx.Repo.Repository, form.Branch, form.FfOnly)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1343,6 +1345,9 @@ func MergeUpstream(ctx *context.APIContext) {
|
|||||||
} else if errors.Is(err, util.ErrPermissionDenied) {
|
} else if errors.Is(err, util.ErrPermissionDenied) {
|
||||||
ctx.APIError(http.StatusForbidden, err.Error())
|
ctx.APIError(http.StatusForbidden, err.Error())
|
||||||
return
|
return
|
||||||
|
} else if pull_service.IsErrMergeConflicts(err) || pull_service.IsErrMergeUnrelatedHistories(err) {
|
||||||
|
ctx.APIError(http.StatusConflict, err.Error())
|
||||||
|
return
|
||||||
}
|
}
|
||||||
ctx.APIErrorInternal(err)
|
ctx.APIErrorInternal(err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -240,6 +240,9 @@ func MergeUpstream(ctx *context.Context) {
|
|||||||
} else if pull_service.IsErrMergeConflicts(err) {
|
} else if pull_service.IsErrMergeConflicts(err) {
|
||||||
ctx.JSONError(ctx.Tr("repo.pulls.merge_conflict"))
|
ctx.JSONError(ctx.Tr("repo.pulls.merge_conflict"))
|
||||||
return
|
return
|
||||||
|
} else if pull_service.IsErrMergeUnrelatedHistories(err) {
|
||||||
|
ctx.JSONError(ctx.Tr("repo.pulls.unrelated_histories"))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
ctx.ServerError("MergeUpstream", err)
|
ctx.ServerError("MergeUpstream", err)
|
||||||
return
|
return
|
||||||
|
|||||||
+3
@@ -27155,6 +27155,9 @@
|
|||||||
},
|
},
|
||||||
"404": {
|
"404": {
|
||||||
"$ref": "#/components/responses/notFound"
|
"$ref": "#/components/responses/notFound"
|
||||||
|
},
|
||||||
|
"409": {
|
||||||
|
"$ref": "#/components/responses/error"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": "Merge a branch from upstream",
|
"summary": "Merge a branch from upstream",
|
||||||
|
|||||||
+3
@@ -14997,6 +14997,9 @@
|
|||||||
},
|
},
|
||||||
"404": {
|
"404": {
|
||||||
"$ref": "#/responses/notFound"
|
"$ref": "#/responses/notFound"
|
||||||
|
},
|
||||||
|
"409": {
|
||||||
|
"$ref": "#/responses/error"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user