package main import ( "log" "gopkg.in/src-d/go-git.v4" "gopkg.in/src-d/go-git.v4/config" "gopkg.in/src-d/go-git.v4/storage/memory" ) // Retrieve remote tags without cloning repository func main() { // Create the remote with repository URL rem := git.NewRemote(memory.NewStorage(), &config.RemoteConfig{ Name: "origin", URLs: []string{"https://github.com/Zenika/MARCEL"}, }) log.Print("Fetching tags...") // We can then use every Remote functions to retrieve wanted information refs, err := rem.List(&git.ListOptions{}) if err != nil { log.Fatal(err) } // Filters the references list and only keeps tags var tags []string for _, ref := range refs { if ref.Name().IsTag() { tags = append(tags, ref.Name().Short()) } } if len(tags) == 0 { log.Println("No tags!") return } log.Printf("Tags found: %v", tags) }