mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Move database operations of merging a pull request to post receive hook and add a transaction (#30805)
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: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -338,6 +338,7 @@ Gitea or set your environment appropriately.`, "") | ||||
| 	isWiki, _ := strconv.ParseBool(os.Getenv(repo_module.EnvRepoIsWiki)) | ||||
| 	repoName := os.Getenv(repo_module.EnvRepoName) | ||||
| 	pusherID, _ := strconv.ParseInt(os.Getenv(repo_module.EnvPusherID), 10, 64) | ||||
| 	prID, _ := strconv.ParseInt(os.Getenv(repo_module.EnvPRID), 10, 64) | ||||
| 	pusherName := os.Getenv(repo_module.EnvPusherName) | ||||
|  | ||||
| 	hookOptions := private.HookOptions{ | ||||
| @@ -347,6 +348,8 @@ Gitea or set your environment appropriately.`, "") | ||||
| 		GitObjectDirectory:              os.Getenv(private.GitObjectDirectory), | ||||
| 		GitQuarantinePath:               os.Getenv(private.GitQuarantinePath), | ||||
| 		GitPushOptions:                  pushOptions(), | ||||
| 		PullRequestID:                   prID, | ||||
| 		PushTrigger:                     repo_module.PushTrigger(os.Getenv(repo_module.EnvPushTrigger)), | ||||
| 	} | ||||
| 	oldCommitIDs := make([]string, hookBatchSize) | ||||
| 	newCommitIDs := make([]string, hookBatchSize) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user