mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +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:
		@@ -25,11 +25,19 @@ const (
 | 
			
		||||
	EnvKeyID        = "GITEA_KEY_ID" // public key ID
 | 
			
		||||
	EnvDeployKeyID  = "GITEA_DEPLOY_KEY_ID"
 | 
			
		||||
	EnvPRID         = "GITEA_PR_ID"
 | 
			
		||||
	EnvPushTrigger  = "GITEA_PUSH_TRIGGER"
 | 
			
		||||
	EnvIsInternal   = "GITEA_INTERNAL_PUSH"
 | 
			
		||||
	EnvAppURL       = "GITEA_ROOT_URL"
 | 
			
		||||
	EnvActionPerm   = "GITEA_ACTION_PERM"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type PushTrigger string
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	PushTriggerPRMergeToBase    PushTrigger = "pr-merge-to-base"
 | 
			
		||||
	PushTriggerPRUpdateWithBase PushTrigger = "pr-update-with-base"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// InternalPushingEnvironment returns an os environment to switch off hooks on push
 | 
			
		||||
// It is recommended to avoid using this unless you are pushing within a transaction
 | 
			
		||||
// or if you absolutely are sure that post-receive and pre-receive will do nothing
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user