| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | 
							- // Copyright 2021 The Gogs Authors. All rights reserved.
 
- // Use of this source code is governed by a MIT-style
 
- // license that can be found in the LICENSE file.
 
- package db
 
- import (
 
- 	"fmt"
 
- 	"github.com/gogs/git-module"
 
- )
 
- type Tag struct {
 
- 	RepoPath string
 
- 	Name     string
 
- 	IsProtected bool
 
- 	Commit      *git.Commit
 
- }
 
- func (ta *Tag) GetCommit() (*git.Commit, error) {
 
- 	gitRepo, err := git.Open(ta.RepoPath)
 
- 	if err != nil {
 
- 		return nil, fmt.Errorf("open repository: %v", err)
 
- 	}
 
- 	return gitRepo.TagCommit(ta.Name)
 
- }
 
- func GetTagsByPath(path string) ([]*Tag, error) {
 
- 	gitRepo, err := git.Open(path)
 
- 	if err != nil {
 
- 		return nil, fmt.Errorf("open repository: %v", err)
 
- 	}
 
- 	names, err := gitRepo.Tags()
 
- 	if err != nil {
 
- 		return nil, fmt.Errorf("list tags")
 
- 	}
 
- 	tags := make([]*Tag, len(names))
 
- 	for i := range names {
 
- 		tags[i] = &Tag{
 
- 			RepoPath: path,
 
- 			Name:     names[i],
 
- 		}
 
- 	}
 
- 	return tags, nil
 
- }
 
- func (repo *Repository) GetTags() ([]*Tag, error) {
 
- 	return GetTagsByPath(repo.RepoPath())
 
- }
 
 
  |