| 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) |
| } |