@@ 86,15 86,30 @@ func createRefsFile(r *git.Repository) {
iter, err := r.Tags()
check(err)
err = iter.ForEach(func(ref *plumbing.Reference) error {
- c, err := r.CommitObject(ref.Hash())
- if err != nil {
+ var c *object.Commit
+
+ hash := ref.Hash()
+ obj, err := r.TagObject(hash)
+ switch err {
+ case nil:
+ // an annotated tag
+ if c, err = r.CommitObject(obj.Target); err != nil {
+ return err
+ }
+ hash = obj.Target
+ case plumbing.ErrObjectNotFound:
+ // a lightweight tag
+ if c, err = r.CommitObject(hash); err != nil {
+ return err
+ }
+ default:
return err
}
tag := fmt.Sprintf(
"=> ../%s/%s.patch %s - %s",
commitsSubPath,
- ref.Hash(),
+ hash,
c.Author.When.Format("2006-01-02"),
filepath.Base(ref.Name().String()),
)