mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Add skip and limit to git.GetTags (#16897)
* Make GetTags() api similar to GetBranches() * Use it for Tag/Release page
This commit is contained in:
		| @@ -547,7 +547,7 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	tags, err := ctx.Repo.GitRepo.GetTags() | ||||
| 	tags, err := ctx.Repo.GitRepo.GetTags(0, 0) | ||||
| 	if err != nil { | ||||
| 		ctx.ServerError("GetTags", err) | ||||
| 		return | ||||
|   | ||||
| @@ -21,7 +21,8 @@ func (repo *Repository) IsTagExist(name string) bool { | ||||
| } | ||||
|  | ||||
| // GetTags returns all tags of the repository. | ||||
| func (repo *Repository) GetTags() ([]string, error) { | ||||
| // returning at most limit tags, or all if limit is 0. | ||||
| func (repo *Repository) GetTags(skip, limit int) ([]string, error) { | ||||
| 	var tagNames []string | ||||
|  | ||||
| 	tags, err := repo.gogitRepo.Tags() | ||||
| @@ -40,5 +41,15 @@ func (repo *Repository) GetTags() ([]string, error) { | ||||
| 		tagNames[i], tagNames[j] = tagNames[j], tagNames[i] | ||||
| 	} | ||||
|  | ||||
| 	// since we have to reverse order we can paginate only afterwards | ||||
| 	if len(tagNames) < skip { | ||||
| 		tagNames = []string{} | ||||
| 	} else { | ||||
| 		tagNames = tagNames[skip:] | ||||
| 	} | ||||
| 	if limit != 0 && len(tagNames) > limit { | ||||
| 		tagNames = tagNames[:limit] | ||||
| 	} | ||||
|  | ||||
| 	return tagNames, nil | ||||
| } | ||||
|   | ||||
| @@ -18,7 +18,8 @@ func (repo *Repository) IsTagExist(name string) bool { | ||||
| } | ||||
|  | ||||
| // GetTags returns all tags of the repository. | ||||
| func (repo *Repository) GetTags() (tags []string, err error) { | ||||
| 	tags, _, err = callShowRef(repo.Path, TagPrefix, "--tags", 0, 0) | ||||
| // returning at most limit tags, or all if limit is 0. | ||||
| func (repo *Repository) GetTags(skip, limit int) (tags []string, err error) { | ||||
| 	tags, _, err = callShowRef(repo.Path, TagPrefix, "--tags", skip, limit) | ||||
| 	return | ||||
| } | ||||
|   | ||||
| @@ -250,7 +250,7 @@ func SyncReleasesWithTags(repo *models.Repository, gitRepo *git.Repository) erro | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	tags, err := gitRepo.GetTags() | ||||
| 	tags, err := gitRepo.GetTags(0, 0) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("GetTags: %v", err) | ||||
| 	} | ||||
|   | ||||
| @@ -606,7 +606,7 @@ func getBranchesAndTagsForRepo(user *models.User, repo *models.Repository) (bool | ||||
| 	if err != nil { | ||||
| 		return false, nil, nil, err | ||||
| 	} | ||||
| 	tags, err := gitRepo.GetTags() | ||||
| 	tags, err := gitRepo.GetTags(0, 0) | ||||
| 	if err != nil { | ||||
| 		return false, nil, nil, err | ||||
| 	} | ||||
| @@ -632,7 +632,7 @@ func CompareDiff(ctx *context.Context) { | ||||
| 	} | ||||
|  | ||||
| 	baseGitRepo := ctx.Repo.GitRepo | ||||
| 	baseTags, err := baseGitRepo.GetTags() | ||||
| 	baseTags, err := baseGitRepo.GetTags(0, 0) | ||||
| 	if err != nil { | ||||
| 		ctx.ServerError("GetTags", err) | ||||
| 		return | ||||
| @@ -646,7 +646,7 @@ func CompareDiff(ctx *context.Context) { | ||||
| 	} | ||||
| 	ctx.Data["HeadBranches"] = headBranches | ||||
|  | ||||
| 	headTags, err := headGitRepo.GetTags() | ||||
| 	headTags, err := headGitRepo.GetTags(0, 0) | ||||
| 	if err != nil { | ||||
| 		ctx.ServerError("GetTags", err) | ||||
| 		return | ||||
|   | ||||
| @@ -83,7 +83,18 @@ func releasesOrTags(ctx *context.Context, isTagList bool) { | ||||
| 		ctx.Data["PageIsTagList"] = false | ||||
| 	} | ||||
|  | ||||
| 	tags, err := ctx.Repo.GitRepo.GetTags() | ||||
| 	listOptions := models.ListOptions{ | ||||
| 		Page:     ctx.FormInt("page"), | ||||
| 		PageSize: ctx.FormInt("limit"), | ||||
| 	} | ||||
| 	if listOptions.PageSize == 0 { | ||||
| 		listOptions.PageSize = setting.Repository.Release.DefaultPagingNum | ||||
| 	} | ||||
| 	if listOptions.PageSize > setting.API.MaxResponseItems { | ||||
| 		listOptions.PageSize = setting.API.MaxResponseItems | ||||
| 	} | ||||
|  | ||||
| 	tags, err := ctx.Repo.GitRepo.GetTags(listOptions.GetStartEnd()) | ||||
| 	if err != nil { | ||||
| 		ctx.ServerError("GetTags", err) | ||||
| 		return | ||||
| @@ -92,19 +103,9 @@ func releasesOrTags(ctx *context.Context, isTagList bool) { | ||||
|  | ||||
| 	writeAccess := ctx.Repo.CanWrite(models.UnitTypeReleases) | ||||
| 	ctx.Data["CanCreateRelease"] = writeAccess && !ctx.Repo.Repository.IsArchived | ||||
| 	limit := ctx.FormInt("limit") | ||||
| 	if limit == 0 { | ||||
| 		limit = setting.Repository.Release.DefaultPagingNum | ||||
| 	} | ||||
| 	if limit > setting.API.MaxResponseItems { | ||||
| 		limit = setting.API.MaxResponseItems | ||||
| 	} | ||||
|  | ||||
| 	opts := models.FindReleasesOptions{ | ||||
| 		ListOptions: models.ListOptions{ | ||||
| 			Page:     ctx.FormInt("page"), | ||||
| 			PageSize: limit, | ||||
| 		}, | ||||
| 		ListOptions:   listOptions, | ||||
| 		IncludeDrafts: writeAccess && !isTagList, | ||||
| 		IncludeTags:   isTagList, | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user