gitea源码

commit.go 1.6KB

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