···2727 h plumbing.Hash2828}29293030-// TagReference is used to list both tag and non-annotated tags.3131-// Non-annotated tags should only contains a reference.3232-// Annotated tags should contain its reference and its tag information.3333-type TagReference struct {3434- ref *plumbing.Reference3535- tag *object.Tag3636-}3737-3830// infoWrapper wraps the property of a TreeEntry so it can export fs.FileInfo3931// to tar WriteHeader4032type infoWrapper struct {···358366359367func (i *infoWrapper) Sys() any {360368 return nil361361-}362362-363363-func (t *TagReference) Name() string {364364- return t.ref.Name().Short()365365-}366366-367367-func (t *TagReference) Message() string {368368- if t.tag != nil {369369- return t.tag.Message370370- }371371- return ""372372-}373373-374374-func (t *TagReference) TagObject() *object.Tag {375375- return t.tag376376-}377377-378378-func (t *TagReference) Hash() plumbing.Hash {379379- return t.ref.Hash()380369}