mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Add require signed commit for protected branch (#9708)
* Add require signed commit for protected branch * Fix fmt * Make editor show if they will be signed * bugfix * Add basic merge check and better information for CRUD * linting comment * Add descriptors to merge signing * Slight refactor * Slight improvement to appearances * Handle Merge API * manage CRUD API * Move error to error.go * Remove fix to delete.go * prep for merge * need to tolerate \r\n in message * check protected branch before trying to load it * Apply suggestions from code review Co-Authored-By: guillep2k <18600385+guillep2k@users.noreply.github.com> * fix commit-reader Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
This commit is contained in:
		@@ -158,7 +158,7 @@ func Merge(pr *models.PullRequest, doer *models.User, baseGitRepo *git.Repositor
 | 
			
		||||
	// Determine if we should sign
 | 
			
		||||
	signArg := ""
 | 
			
		||||
	if version.Compare(binVersion, "1.7.9", ">=") {
 | 
			
		||||
		sign, keyID := pr.SignMerge(doer, tmpBasePath, "HEAD", trackingBranch)
 | 
			
		||||
		sign, keyID, _ := pr.SignMerge(doer, tmpBasePath, "HEAD", trackingBranch)
 | 
			
		||||
		if sign {
 | 
			
		||||
			signArg = "-S" + keyID
 | 
			
		||||
		} else if version.Compare(binVersion, "2.0.0", ">=") {
 | 
			
		||||
@@ -470,6 +470,21 @@ func getDiffTree(repoPath, baseBranch, headBranch string) (string, error) {
 | 
			
		||||
	return out.String(), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsSignedIfRequired check if merge will be signed if required
 | 
			
		||||
func IsSignedIfRequired(pr *models.PullRequest, doer *models.User) (bool, error) {
 | 
			
		||||
	if err := pr.LoadProtectedBranch(); err != nil {
 | 
			
		||||
		return false, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if pr.ProtectedBranch == nil || !pr.ProtectedBranch.RequireSignedCommits {
 | 
			
		||||
		return true, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	sign, _, err := pr.SignMerge(doer, pr.BaseRepo.RepoPath(), pr.BaseBranch, pr.GetGitRefName())
 | 
			
		||||
 | 
			
		||||
	return sign, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsUserAllowedToMerge check if user is allowed to merge PR with given permissions and branch protections
 | 
			
		||||
func IsUserAllowedToMerge(pr *models.PullRequest, p models.Permission, user *models.User) (bool, error) {
 | 
			
		||||
	if p.IsAdmin() {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user