gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Copyright 2015 The Gogs Authors. All rights reserved.
  2. // Copyright 2018 The Gitea Authors. All rights reserved.
  3. // SPDX-License-Identifier: MIT
  4. //go:build gogit
  5. package git
  6. import (
  7. "fmt"
  8. "strings"
  9. "github.com/go-git/go-git/v5/plumbing/object"
  10. )
  11. func convertPGPSignature(c *object.Commit) *CommitSignature {
  12. if c.PGPSignature == "" {
  13. return nil
  14. }
  15. var w strings.Builder
  16. var err error
  17. if _, err = fmt.Fprintf(&w, "tree %s\n", c.TreeHash.String()); err != nil {
  18. return nil
  19. }
  20. for _, parent := range c.ParentHashes {
  21. if _, err = fmt.Fprintf(&w, "parent %s\n", parent.String()); err != nil {
  22. return nil
  23. }
  24. }
  25. if _, err = fmt.Fprint(&w, "author "); err != nil {
  26. return nil
  27. }
  28. if err = c.Author.Encode(&w); err != nil {
  29. return nil
  30. }
  31. if _, err = fmt.Fprint(&w, "\ncommitter "); err != nil {
  32. return nil
  33. }
  34. if err = c.Committer.Encode(&w); err != nil {
  35. return nil
  36. }
  37. if c.Encoding != "" && c.Encoding != "UTF-8" {
  38. if _, err = fmt.Fprintf(&w, "\nencoding %s\n", c.Encoding); err != nil {
  39. return nil
  40. }
  41. }
  42. if _, err = fmt.Fprintf(&w, "\n\n%s", c.Message); err != nil {
  43. return nil
  44. }
  45. return &CommitSignature{
  46. Signature: c.PGPSignature,
  47. Payload: w.String(),
  48. }
  49. }
  50. func convertCommit(c *object.Commit) *Commit {
  51. return &Commit{
  52. ID: ParseGogitHash(c.Hash),
  53. CommitMessage: c.Message,
  54. Committer: &c.Committer,
  55. Author: &c.Author,
  56. Signature: convertPGPSignature(c),
  57. Parents: ParseGogitHashArray(c.ParentHashes),
  58. }
  59. }