|
5 | 5 | package git
|
6 | 6 |
|
7 | 7 | import (
|
| 8 | + "fmt" |
| 9 | + "strings" |
| 10 | + |
8 | 11 | "gopkg.in/src-d/go-git.v4/plumbing"
|
9 | 12 | "gopkg.in/src-d/go-git.v4/plumbing/object"
|
10 | 13 | "gopkg.in/src-d/go-git.v4/plumbing/storer"
|
@@ -43,21 +46,57 @@ func (tes Entries) GetCommitsInfo(commit *Commit, treePath string, cache LastCom
|
43 | 46 | return commitsInfo, convertCommit(treeCommit), nil
|
44 | 47 | }
|
45 | 48 |
|
46 |
| -func convertCommit(c *object.Commit) *Commit { |
47 |
| - var pgpSignaure *CommitGPGSignature |
48 |
| - if c.PGPSignature != "" { |
49 |
| - pgpSignaure = &CommitGPGSignature{ |
50 |
| - Signature: c.PGPSignature, |
51 |
| - Payload: c.Message, // FIXME: This is not correct |
| 49 | +func convertPGPSignature(c *object.Commit) *CommitGPGSignature { |
| 50 | + if c.PGPSignature == "" { |
| 51 | + return nil |
| 52 | + } |
| 53 | + |
| 54 | + var w strings.Builder |
| 55 | + var err error |
| 56 | + |
| 57 | + if _, err = fmt.Fprintf(&w, "tree %s\n", c.TreeHash.String()); err != nil { |
| 58 | + return nil |
| 59 | + } |
| 60 | + |
| 61 | + for _, parent := range c.ParentHashes { |
| 62 | + if _, err = fmt.Fprintf(&w, "parent %s\n", parent.String()); err != nil { |
| 63 | + return nil |
52 | 64 | }
|
53 | 65 | }
|
54 | 66 |
|
| 67 | + if _, err = fmt.Fprint(&w, "author "); err != nil { |
| 68 | + return nil |
| 69 | + } |
| 70 | + |
| 71 | + if err = c.Author.Encode(&w); err != nil { |
| 72 | + return nil |
| 73 | + } |
| 74 | + |
| 75 | + if _, err = fmt.Fprint(&w, "\ncommitter "); err != nil { |
| 76 | + return nil |
| 77 | + } |
| 78 | + |
| 79 | + if err = c.Committer.Encode(&w); err != nil { |
| 80 | + return nil |
| 81 | + } |
| 82 | + |
| 83 | + if _, err = fmt.Fprintf(&w, "\n\n%s", c.Message); err != nil { |
| 84 | + return nil |
| 85 | + } |
| 86 | + |
| 87 | + return &CommitGPGSignature{ |
| 88 | + Signature: c.PGPSignature, |
| 89 | + Payload: w.String(), |
| 90 | + } |
| 91 | +} |
| 92 | + |
| 93 | +func convertCommit(c *object.Commit) *Commit { |
55 | 94 | return &Commit{
|
56 | 95 | ID: c.Hash,
|
57 | 96 | CommitMessage: c.Message,
|
58 | 97 | Committer: &c.Committer,
|
59 | 98 | Author: &c.Author,
|
60 |
| - Signature: pgpSignaure, |
| 99 | + Signature: convertPGPSignature(c), |
61 | 100 | parents: c.ParentHashes,
|
62 | 101 | }
|
63 | 102 | }
|
|
0 commit comments