all repos — legit @ 3fc204c2535caff4714a5942d051da7b08e65c02

legit - simple git web interface in go (fork)

sort tags in reverse chronological order and deduplicate
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmPZrWMACgkQO3+8IhRO
Y5gxORAAg6d9wVnPY6Oz8WlVsPv1SyJ/rGbINU4fYjVasMehpGSmwIryTMR8HkKU
Imm+fVfF65Kb0w2noTKmbYTrqXwm0rkZxUEFrEpwmbEXCGxTltNjQCGkt0RUwLyO
5WtIzbaJUUjyAjikaPPGe4VqbwrkoJXvLKN7vI5jocYusUHhdkxB4hfbhDLE4JJY
x2SF7x1codHyBtajE5L5puUY3DF3kcebeN4ApZ3u/hjv/nH1DV7qhwV6VZWoG79n
d+3AVOo+xq0p7dGuvZAQg7kSMOQUHCJi4U6VLJ/LN9TSGjqYe4XzJPpW3I3/WbPR
K4ViM8onKS/jP6OexQcYYDwG4wUlpjDzThnEL/aP3K+gQQjRqPQsXPuuer1WxuOK
K2qgvMkdiRe69v/+QhEORS5WkUHxgWjYILQRGK1Uc+SLrnf7ThKY8OEI8L+1P6pS
o1ZgoTFw7k2IzTI38yFF1vqmdLVZkjzjdUcEC4dN6MRjn5ITzCxzzLxIQhZNbhuG
uRLceZv38RJtBSJMpUBFtfeddVtXdSZMvmaCBqd3hwJoeaz/JFBk9cZ5cOagGFC9
/Tt0WaYNQHG++rVnL3U8sdFgIGCqa7GABF8u+bJA2YutiqAfLvm44h0KJGac9XoI
cTP8QPBCY85PJT8/ThM9NJpsISTZkp9fFjndIi30i1p4HVb2a4w=
=iWix
-----END PGP SIGNATURE-----
commit

3fc204c2535caff4714a5942d051da7b08e65c02

parent

7a512b1da60ca92203ec93ecce8b0debfe6da913

1 files changed, 28 insertions(+), 0 deletions(-)

jump to
M git/git.gogit/git.go

@@ -2,6 +2,7 @@ package git

import ( "fmt" + "sort" "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/plumbing"

@@ -11,6 +12,21 @@

type GitRepo struct { r *git.Repository h plumbing.Hash +} + +type TagList []*object.Tag + +func (self TagList) Len() int { + return len(self) +} + +func (self TagList) Swap(i, j int) { + self[i], self[j] = self[j], self[i] +} + +// sorting tags in reverse chronological order +func (self TagList) Less(i, j int) bool { + return self[i].Tagger.When.After(self[j].Tagger.When) } func Open(path string, ref string) (*GitRepo, error) {

@@ -94,9 +110,21 @@

tags := []*object.Tag{} _ = ti.ForEach(func(t *object.Tag) error { + for i, existing := range tags { + if existing.Name == t.Name { + if t.Tagger.When.After(existing.Tagger.When) { + tags[i] = t + } + return nil + } + } tags = append(tags, t) return nil }) + + var tagList TagList + tagList = tags + sort.Sort(tagList) return tags, nil }