mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 11:28:24 +00:00 
			
		
		
		
	Move database operations of merging a pull request to post receive hook and add a transaction (#30805) (#30888)
Backport #30805 by @lunny Merging PR may fail because of various problems. The pull request may have a dirty state because there is no transaction when merging a pull request. ref https://github.com/go-gitea/gitea/pull/25741#issuecomment-2074126393 This PR moves all database update operations to post-receive handler for merging a pull request and having a database transaction. That means if database operations fail, then the git merging will fail, the git client will get a fail result. There are already many tests for pull request merging, so we don't need to add a new one. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -94,6 +94,19 @@ func MockAPIContext(t *testing.T, reqPath string) (*context.APIContext, *httptes | ||||
| 	return ctx, resp | ||||
| } | ||||
|  | ||||
| func MockPrivateContext(t *testing.T, reqPath string) (*context.PrivateContext, *httptest.ResponseRecorder) { | ||||
| 	resp := httptest.NewRecorder() | ||||
| 	req := mockRequest(t, reqPath) | ||||
| 	base, baseCleanUp := context.NewBaseContext(resp, req) | ||||
| 	base.Data = middleware.GetContextData(req.Context()) | ||||
| 	base.Locale = &translation.MockLocale{} | ||||
| 	ctx := &context.PrivateContext{Base: base} | ||||
| 	_ = baseCleanUp // during test, it doesn't need to do clean up. TODO: this can be improved later | ||||
| 	chiCtx := chi.NewRouteContext() | ||||
| 	ctx.Base.AppendContextValue(chi.RouteCtxKey, chiCtx) | ||||
| 	return ctx, resp | ||||
| } | ||||
|  | ||||
| // LoadRepo load a repo into a test context. | ||||
| func LoadRepo(t *testing.T, ctx gocontext.Context, repoID int64) { | ||||
| 	var doer *user_model.User | ||||
|   | ||||
		Reference in New Issue
	
	Block a user