diff --git a/routers/api/v1/repo/branch.go b/routers/api/v1/repo/branch.go index 758d1cd7f0e..38d5f5e1907 100644 --- a/routers/api/v1/repo/branch.go +++ b/routers/api/v1/repo/branch.go @@ -1331,6 +1331,8 @@ func MergeUpstream(ctx *context.APIContext) { // "$ref": "#/responses/error" // "404": // "$ref": "#/responses/notFound" + // "409": + // "$ref": "#/responses/error" form := web.GetForm[*api.MergeUpstreamRequest](ctx) mergeStyle, err := repo_service.MergeUpstream(ctx, ctx.Doer, ctx.Repo.Repository, form.Branch, form.FfOnly) if err != nil { @@ -1343,6 +1345,9 @@ func MergeUpstream(ctx *context.APIContext) { } else if errors.Is(err, util.ErrPermissionDenied) { ctx.APIError(http.StatusForbidden, err.Error()) return + } else if pull_service.IsErrMergeConflicts(err) || pull_service.IsErrMergeUnrelatedHistories(err) { + ctx.APIError(http.StatusConflict, err.Error()) + return } ctx.APIErrorInternal(err) return diff --git a/routers/web/repo/branch.go b/routers/web/repo/branch.go index b3c7cc0eb67..e2edcc75d65 100644 --- a/routers/web/repo/branch.go +++ b/routers/web/repo/branch.go @@ -240,6 +240,9 @@ func MergeUpstream(ctx *context.Context) { } else if pull_service.IsErrMergeConflicts(err) { ctx.JSONError(ctx.Tr("repo.pulls.merge_conflict")) return + } else if pull_service.IsErrMergeUnrelatedHistories(err) { + ctx.JSONError(ctx.Tr("repo.pulls.unrelated_histories")) + return } ctx.ServerError("MergeUpstream", err) return diff --git a/templates/swagger/v1-openapi3.generated.json b/templates/swagger/v1-openapi3.generated.json index 8da43734261..e9926c77acb 100644 --- a/templates/swagger/v1-openapi3.generated.json +++ b/templates/swagger/v1-openapi3.generated.json @@ -27155,6 +27155,9 @@ }, "404": { "$ref": "#/components/responses/notFound" + }, + "409": { + "$ref": "#/components/responses/error" } }, "summary": "Merge a branch from upstream", diff --git a/templates/swagger/v1-swagger.generated.json b/templates/swagger/v1-swagger.generated.json index a4f9c7ade98..bff62700924 100644 --- a/templates/swagger/v1-swagger.generated.json +++ b/templates/swagger/v1-swagger.generated.json @@ -14997,6 +14997,9 @@ }, "404": { "$ref": "#/responses/notFound" + }, + "409": { + "$ref": "#/responses/error" } } }