cmd/sgblog/main.go | 51 ++++++++++++++++++++++++++++++++------------------- diff --git a/cmd/sgblog/main.go b/cmd/sgblog/main.go index 687623534b8dbf5c2dd218f43b8de8bcc0f3fb8ee7479d5ecc941bf76ca38fac..64798ccba52250c7068b11a6d43f9b29dbc36d73cc04c8dbdbb62d289395f333 100644 --- a/cmd/sgblog/main.go +++ b/cmd/sgblog/main.go @@ -53,10 +53,11 @@ AtomFeed = "feed.atom" ) 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 @@ } 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 @@ if err != nil { 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 @@ logEnded = true 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 @@ etagHash.Write(data) } 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 @@ line = strings.Join(cols, " ") out.Write([]byte(line + "\n")) } out.Write([]byte("\n
\n" + string(notesRaw) + "\n\n