|
|
@ -187,7 +187,7 @@ func (repo *Repository) GetTag(name string) (*Tag, error) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetTagInfos returns all tag infos of the repository.
|
|
|
|
// GetTagInfos returns all tag infos of the repository.
|
|
|
|
func (repo *Repository) GetTagInfos() ([]*Tag, error) {
|
|
|
|
func (repo *Repository) GetTagInfos(page, pageSize int) ([]*Tag, error) {
|
|
|
|
// TODO this a slow implementation, makes one git command per tag
|
|
|
|
// TODO this a slow implementation, makes one git command per tag
|
|
|
|
stdout, err := NewCommand("tag").RunInDir(repo.Path)
|
|
|
|
stdout, err := NewCommand("tag").RunInDir(repo.Path)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
@ -195,6 +195,18 @@ func (repo *Repository) GetTagInfos() ([]*Tag, error) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
tagNames := strings.Split(strings.TrimRight(stdout, "\n"), "\n")
|
|
|
|
tagNames := strings.Split(strings.TrimRight(stdout, "\n"), "\n")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if page != 0 {
|
|
|
|
|
|
|
|
skip := (page - 1) * pageSize
|
|
|
|
|
|
|
|
if skip >= len(tagNames) {
|
|
|
|
|
|
|
|
return nil, nil
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (len(tagNames) - skip) < pageSize {
|
|
|
|
|
|
|
|
pageSize = len(tagNames) - skip
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
tagNames = tagNames[skip : skip+pageSize]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var tags = make([]*Tag, 0, len(tagNames))
|
|
|
|
var tags = make([]*Tag, 0, len(tagNames))
|
|
|
|
for _, tagName := range tagNames {
|
|
|
|
for _, tagName := range tagNames {
|
|
|
|
tagName = strings.TrimSpace(tagName)
|
|
|
|
tagName = strings.TrimSpace(tagName)
|
|
|
|