From f72ad20ffa1bab315970a51e1e2821b43adc32fb Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 15 Jan 2020 10:55:53 +0300 Subject: [PATCH] Also show notes, not only comments --- cmd/sgblog/main.go | 51 +++++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/cmd/sgblog/main.go b/cmd/sgblog/main.go index 665e7f3..3611893 100644 --- a/cmd/sgblog/main.go +++ b/cmd/sgblog/main.go @@ -53,10 +53,11 @@ const ( ) var ( - Version = "0.1.0" + Version = "0.2.0" sha1DigestRe = regexp.MustCompilePOSIX("([0-9a-f]{40,40})") defaultLinks = []string{} repo *git.Repository + notesTree *object.Tree commentsTree *object.Tree renderableSchemes = map[string]struct{}{ @@ -118,11 +119,11 @@ func msgSplit(msg string) []string { return lines } -func getCommentsRaw(what plumbing.Hash) []byte { - if commentsTree == nil { +func getNote(tree *object.Tree, what plumbing.Hash) []byte { + if tree == nil { return nil } - entry, err := commentsTree.FindEntry(what.String()) + entry, err := tree.FindEntry(what.String()) if err != nil { return nil } @@ -277,19 +278,26 @@ func main() { makeErr(err) } - if cfg.CommentsNotesRef != "" { - if notes, err := repo.Notes(); err == nil { - var comments *plumbing.Reference - notes.ForEach(func(ref *plumbing.Reference) error { - if string(ref.Name()) == cfg.CommentsNotesRef { - comments = ref - } - return nil - }) - if comments != nil { - if commentsCommit, err := repo.CommitObject(comments.Hash()); err == nil { - commentsTree, _ = commentsCommit.Tree() - } + if notes, err := repo.Notes(); err == nil { + var notesRef *plumbing.Reference + var commentsRef *plumbing.Reference + notes.ForEach(func(ref *plumbing.Reference) error { + switch string(ref.Name()) { + case "refs/notes/commits": + notesRef = ref + case cfg.CommentsNotesRef: + commentsRef = ref + } + return nil + }) + if notesRef != nil { + if commentsCommit, err := repo.CommitObject(notesRef.Hash()); err == nil { + notesTree, _ = commentsCommit.Tree() + } + } + if commentsRef != nil { + if commentsCommit, err := repo.CommitObject(commentsRef.Hash()); err == nil { + commentsTree, _ = commentsCommit.Tree() } } } @@ -339,7 +347,7 @@ func main() { break } etagHash.Write(commit.Hash[:]) - commentsRaw := getCommentsRaw(commit.Hash) + commentsRaw := getNote(commentsTree, commit.Hash) etagHash.Write(commentsRaw) entries = append(entries, TableEntry{commit, commentsRaw}) } @@ -499,7 +507,9 @@ func main() { } etagHash.Write([]byte("ENTRY")) etagHash.Write(commit.Hash[:]) - commentsRaw := getCommentsRaw(commit.Hash) + notesRaw := getNote(notesTree, commit.Hash) + etagHash.Write(notesRaw) + commentsRaw := getNote(commentsTree, commit.Hash) etagHash.Write(commentsRaw) checkETag(etagHash) lines := msgSplit(commit.Message) @@ -542,6 +552,9 @@ func main() { out.Write([]byte(line + "\n")) } out.Write([]byte("\n
\n")) + if len(notesRaw) > 0 { + out.Write([]byte("Note:
\n" + string(notesRaw) + "\n
\n
\n")) + } if cfg.CommentsEmail != "" { out.Write([]byte("[" + makeA( "mailto:"+cfg.CommentsEmail+"?subject="+commit.Hash.String(), -- 2.44.0