code.gitea.io/gitea@v1.22.3/services/repository/files/commit.go (about)

     1  // Copyright 2019 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package files
     5  
     6  import (
     7  	"context"
     8  
     9  	asymkey_model "code.gitea.io/gitea/models/asymkey"
    10  	repo_model "code.gitea.io/gitea/models/repo"
    11  	"code.gitea.io/gitea/modules/git"
    12  	"code.gitea.io/gitea/modules/structs"
    13  )
    14  
    15  // CountDivergingCommits determines how many commits a branch is ahead or behind the repository's base branch
    16  func CountDivergingCommits(ctx context.Context, repo *repo_model.Repository, branch string) (*git.DivergeObject, error) {
    17  	divergence, err := git.GetDivergingCommits(ctx, repo.RepoPath(), repo.DefaultBranch, branch)
    18  	if err != nil {
    19  		return nil, err
    20  	}
    21  	return &divergence, nil
    22  }
    23  
    24  // GetPayloadCommitVerification returns the verification information of a commit
    25  func GetPayloadCommitVerification(ctx context.Context, commit *git.Commit) *structs.PayloadCommitVerification {
    26  	verification := &structs.PayloadCommitVerification{}
    27  	commitVerification := asymkey_model.ParseCommitWithSignature(ctx, commit)
    28  	if commit.Signature != nil {
    29  		verification.Signature = commit.Signature.Signature
    30  		verification.Payload = commit.Signature.Payload
    31  	}
    32  	if commitVerification.SigningUser != nil {
    33  		verification.Signer = &structs.PayloadUser{
    34  			Name:  commitVerification.SigningUser.Name,
    35  			Email: commitVerification.SigningUser.Email,
    36  		}
    37  	}
    38  	verification.Verified = commitVerification.Verified
    39  	verification.Reason = commitVerification.Reason
    40  	if verification.Reason == "" && !verification.Verified {
    41  		verification.Reason = "gpg.error.not_signed_commit"
    42  	}
    43  	return verification
    44  }