mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	Fixed commit count. (#17698)
Added "Tag" label. Unified branch, tag and commit name.
This commit is contained in:
		| @@ -59,6 +59,7 @@ type Repository struct { | |||||||
| 	Commit       *git.Commit | 	Commit       *git.Commit | ||||||
| 	Tag          *git.Tag | 	Tag          *git.Tag | ||||||
| 	GitRepo      *git.Repository | 	GitRepo      *git.Repository | ||||||
|  | 	RefName      string | ||||||
| 	BranchName   string | 	BranchName   string | ||||||
| 	TagName      string | 	TagName      string | ||||||
| 	TreePath     string | 	TreePath     string | ||||||
| @@ -191,9 +192,9 @@ func (r *Repository) BranchNameSubURL() string { | |||||||
| 	case r.IsViewBranch: | 	case r.IsViewBranch: | ||||||
| 		return "branch/" + util.PathEscapeSegments(r.BranchName) | 		return "branch/" + util.PathEscapeSegments(r.BranchName) | ||||||
| 	case r.IsViewTag: | 	case r.IsViewTag: | ||||||
| 		return "tag/" + util.PathEscapeSegments(r.BranchName) | 		return "tag/" + util.PathEscapeSegments(r.TagName) | ||||||
| 	case r.IsViewCommit: | 	case r.IsViewCommit: | ||||||
| 		return "commit/" + util.PathEscapeSegments(r.BranchName) | 		return "commit/" + util.PathEscapeSegments(r.CommitID) | ||||||
| 	} | 	} | ||||||
| 	log.Error("Unknown view type for repo: %v", r) | 	log.Error("Unknown view type for repo: %v", r) | ||||||
| 	return "" | 	return "" | ||||||
| @@ -563,8 +564,6 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) { | |||||||
| 	ctx.Data["Branches"] = brs | 	ctx.Data["Branches"] = brs | ||||||
| 	ctx.Data["BranchesCount"] = len(brs) | 	ctx.Data["BranchesCount"] = len(brs) | ||||||
|  |  | ||||||
| 	ctx.Data["TagName"] = ctx.Repo.TagName |  | ||||||
|  |  | ||||||
| 	// If not branch selected, try default one. | 	// If not branch selected, try default one. | ||||||
| 	// If default branch doesn't exists, fall back to some other branch. | 	// If default branch doesn't exists, fall back to some other branch. | ||||||
| 	if len(ctx.Repo.BranchName) == 0 { | 	if len(ctx.Repo.BranchName) == 0 { | ||||||
| @@ -573,9 +572,9 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) { | |||||||
| 		} else if len(brs) > 0 { | 		} else if len(brs) > 0 { | ||||||
| 			ctx.Repo.BranchName = brs[0] | 			ctx.Repo.BranchName = brs[0] | ||||||
| 		} | 		} | ||||||
|  | 		ctx.Repo.RefName = ctx.Repo.BranchName | ||||||
| 	} | 	} | ||||||
| 	ctx.Data["BranchName"] = ctx.Repo.BranchName | 	ctx.Data["BranchName"] = ctx.Repo.BranchName | ||||||
| 	ctx.Data["CommitID"] = ctx.Repo.CommitID |  | ||||||
|  |  | ||||||
| 	// People who have push access or have forked repository can propose a new pull request. | 	// People who have push access or have forked repository can propose a new pull request. | ||||||
| 	canPush := ctx.Repo.CanWrite(unit_model.TypeCode) || (ctx.IsSigned && ctx.User.HasForkedRepo(ctx.Repo.Repository.ID)) | 	canPush := ctx.Repo.CanWrite(unit_model.TypeCode) || (ctx.IsSigned && ctx.User.HasForkedRepo(ctx.Repo.Repository.ID)) | ||||||
| @@ -781,7 +780,6 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context | |||||||
| 		// Get default branch. | 		// Get default branch. | ||||||
| 		if len(ctx.Params("*")) == 0 { | 		if len(ctx.Params("*")) == 0 { | ||||||
| 			refName = ctx.Repo.Repository.DefaultBranch | 			refName = ctx.Repo.Repository.DefaultBranch | ||||||
| 			ctx.Repo.BranchName = refName |  | ||||||
| 			if !ctx.Repo.GitRepo.IsBranchExist(refName) { | 			if !ctx.Repo.GitRepo.IsBranchExist(refName) { | ||||||
| 				brs, _, err := ctx.Repo.GitRepo.GetBranches(0, 0) | 				brs, _, err := ctx.Repo.GitRepo.GetBranches(0, 0) | ||||||
| 				if err != nil { | 				if err != nil { | ||||||
| @@ -795,6 +793,8 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context | |||||||
| 				} | 				} | ||||||
| 				refName = brs[0] | 				refName = brs[0] | ||||||
| 			} | 			} | ||||||
|  | 			ctx.Repo.RefName = refName | ||||||
|  | 			ctx.Repo.BranchName = refName | ||||||
| 			ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName) | 			ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				ctx.ServerError("GetBranchCommit", err) | 				ctx.ServerError("GetBranchCommit", err) | ||||||
| @@ -805,7 +805,7 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context | |||||||
|  |  | ||||||
| 		} else { | 		} else { | ||||||
| 			refName = getRefName(ctx, refType) | 			refName = getRefName(ctx, refType) | ||||||
| 			ctx.Repo.BranchName = refName | 			ctx.Repo.RefName = refName | ||||||
| 			isRenamedBranch, has := ctx.Data["IsRenamedBranch"].(bool) | 			isRenamedBranch, has := ctx.Data["IsRenamedBranch"].(bool) | ||||||
| 			if isRenamedBranch && has { | 			if isRenamedBranch && has { | ||||||
| 				renamedBranchName := ctx.Data["RenamedBranchName"].(string) | 				renamedBranchName := ctx.Data["RenamedBranchName"].(string) | ||||||
| @@ -817,6 +817,7 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context | |||||||
|  |  | ||||||
| 			if refType.RefTypeIncludesBranches() && ctx.Repo.GitRepo.IsBranchExist(refName) { | 			if refType.RefTypeIncludesBranches() && ctx.Repo.GitRepo.IsBranchExist(refName) { | ||||||
| 				ctx.Repo.IsViewBranch = true | 				ctx.Repo.IsViewBranch = true | ||||||
|  | 				ctx.Repo.BranchName = refName | ||||||
|  |  | ||||||
| 				ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName) | 				ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName) | ||||||
| 				if err != nil { | 				if err != nil { | ||||||
| @@ -827,6 +828,8 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context | |||||||
|  |  | ||||||
| 			} else if refType.RefTypeIncludesTags() && ctx.Repo.GitRepo.IsTagExist(refName) { | 			} else if refType.RefTypeIncludesTags() && ctx.Repo.GitRepo.IsTagExist(refName) { | ||||||
| 				ctx.Repo.IsViewTag = true | 				ctx.Repo.IsViewTag = true | ||||||
|  | 				ctx.Repo.TagName = refName | ||||||
|  |  | ||||||
| 				ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetTagCommit(refName) | 				ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetTagCommit(refName) | ||||||
| 				if err != nil { | 				if err != nil { | ||||||
| 					ctx.ServerError("GetTagCommit", err) | 					ctx.ServerError("GetTagCommit", err) | ||||||
| @@ -870,6 +873,7 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context | |||||||
|  |  | ||||||
| 		ctx.Data["BranchName"] = ctx.Repo.BranchName | 		ctx.Data["BranchName"] = ctx.Repo.BranchName | ||||||
| 		ctx.Data["BranchNameSubURL"] = ctx.Repo.BranchNameSubURL() | 		ctx.Data["BranchNameSubURL"] = ctx.Repo.BranchNameSubURL() | ||||||
|  | 		ctx.Data["TagName"] = ctx.Repo.TagName | ||||||
| 		ctx.Data["CommitID"] = ctx.Repo.CommitID | 		ctx.Data["CommitID"] = ctx.Repo.CommitID | ||||||
| 		ctx.Data["TreePath"] = ctx.Repo.TreePath | 		ctx.Data["TreePath"] = ctx.Repo.TreePath | ||||||
| 		ctx.Data["IsViewBranch"] = ctx.Repo.IsViewBranch | 		ctx.Data["IsViewBranch"] = ctx.Repo.IsViewBranch | ||||||
|   | |||||||
| @@ -971,6 +971,7 @@ release = Release | |||||||
| releases = Releases | releases = Releases | ||||||
| tag = Tag | tag = Tag | ||||||
| released_this = released this | released_this = released this | ||||||
|  | file.title =  %s at %s | ||||||
| file_raw = Raw | file_raw = Raw | ||||||
| file_history = History | file_history = History | ||||||
| file_view_source = View Source | file_view_source = View Source | ||||||
|   | |||||||
| @@ -344,17 +344,15 @@ func CreateBranch(ctx *context.Context) { | |||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	if form.CreateTag { | 	if form.CreateTag { | ||||||
| 		if ctx.Repo.IsViewTag { | 		target := ctx.Repo.CommitID | ||||||
| 			err = release_service.CreateNewTag(ctx.User, ctx.Repo.Repository, ctx.Repo.CommitID, form.NewBranchName, "") | 		if ctx.Repo.IsViewBranch { | ||||||
| 		} else { | 			target = ctx.Repo.BranchName | ||||||
| 			err = release_service.CreateNewTag(ctx.User, ctx.Repo.Repository, ctx.Repo.BranchName, form.NewBranchName, "") |  | ||||||
| 		} | 		} | ||||||
|  | 		err = release_service.CreateNewTag(ctx.User, ctx.Repo.Repository, target, form.NewBranchName, "") | ||||||
| 	} else if ctx.Repo.IsViewBranch { | 	} else if ctx.Repo.IsViewBranch { | ||||||
| 		err = repo_service.CreateNewBranch(ctx.User, ctx.Repo.Repository, ctx.Repo.BranchName, form.NewBranchName) | 		err = repo_service.CreateNewBranch(ctx.User, ctx.Repo.Repository, ctx.Repo.BranchName, form.NewBranchName) | ||||||
| 	} else if ctx.Repo.IsViewTag { |  | ||||||
| 		err = repo_service.CreateNewBranchFromCommit(ctx.User, ctx.Repo.Repository, ctx.Repo.CommitID, form.NewBranchName) |  | ||||||
| 	} else { | 	} else { | ||||||
| 		err = repo_service.CreateNewBranchFromCommit(ctx.User, ctx.Repo.Repository, ctx.Repo.BranchName, form.NewBranchName) | 		err = repo_service.CreateNewBranchFromCommit(ctx.User, ctx.Repo.Repository, ctx.Repo.CommitID, form.NewBranchName) | ||||||
| 	} | 	} | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		if models.IsErrTagAlreadyExists(err) { | 		if models.IsErrTagAlreadyExists(err) { | ||||||
|   | |||||||
| @@ -77,7 +77,7 @@ func Commits(ctx *context.Context) { | |||||||
| 	ctx.Data["Username"] = ctx.Repo.Owner.Name | 	ctx.Data["Username"] = ctx.Repo.Owner.Name | ||||||
| 	ctx.Data["Reponame"] = ctx.Repo.Repository.Name | 	ctx.Data["Reponame"] = ctx.Repo.Repository.Name | ||||||
| 	ctx.Data["CommitCount"] = commitsCount | 	ctx.Data["CommitCount"] = commitsCount | ||||||
| 	ctx.Data["Branch"] = ctx.Repo.BranchName | 	ctx.Data["RefName"] = ctx.Repo.RefName | ||||||
|  |  | ||||||
| 	pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5) | 	pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5) | ||||||
| 	pager.SetDefaultParams(ctx) | 	pager.SetDefaultParams(ctx) | ||||||
| @@ -153,7 +153,7 @@ func Graph(ctx *context.Context) { | |||||||
| 	ctx.Data["Username"] = ctx.Repo.Owner.Name | 	ctx.Data["Username"] = ctx.Repo.Owner.Name | ||||||
| 	ctx.Data["Reponame"] = ctx.Repo.Repository.Name | 	ctx.Data["Reponame"] = ctx.Repo.Repository.Name | ||||||
| 	ctx.Data["CommitCount"] = commitsCount | 	ctx.Data["CommitCount"] = commitsCount | ||||||
| 	ctx.Data["Branch"] = ctx.Repo.BranchName | 	ctx.Data["RefName"] = ctx.Repo.RefName | ||||||
| 	paginator := context.NewPagination(int(graphCommitsCount), setting.UI.GraphMaxCommitNum, page, 5) | 	paginator := context.NewPagination(int(graphCommitsCount), setting.UI.GraphMaxCommitNum, page, 5) | ||||||
| 	paginator.AddParam(ctx, "mode", "Mode") | 	paginator.AddParam(ctx, "mode", "Mode") | ||||||
| 	paginator.AddParam(ctx, "hide-pr-refs", "HidePRRefs") | 	paginator.AddParam(ctx, "hide-pr-refs", "HidePRRefs") | ||||||
| @@ -199,7 +199,7 @@ func SearchCommits(ctx *context.Context) { | |||||||
| 	} | 	} | ||||||
| 	ctx.Data["Username"] = ctx.Repo.Owner.Name | 	ctx.Data["Username"] = ctx.Repo.Owner.Name | ||||||
| 	ctx.Data["Reponame"] = ctx.Repo.Repository.Name | 	ctx.Data["Reponame"] = ctx.Repo.Repository.Name | ||||||
| 	ctx.Data["Branch"] = ctx.Repo.BranchName | 	ctx.Data["RefName"] = ctx.Repo.RefName | ||||||
| 	ctx.HTML(http.StatusOK, tplCommits) | 	ctx.HTML(http.StatusOK, tplCommits) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -213,8 +213,7 @@ func FileHistory(ctx *context.Context) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	branchName := ctx.Repo.BranchName | 	commitsCount, err := ctx.Repo.GitRepo.FileCommitsCount(ctx.Repo.RefName, fileName) | ||||||
| 	commitsCount, err := ctx.Repo.GitRepo.FileCommitsCount(branchName, fileName) |  | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		ctx.ServerError("FileCommitsCount", err) | 		ctx.ServerError("FileCommitsCount", err) | ||||||
| 		return | 		return | ||||||
| @@ -228,7 +227,7 @@ func FileHistory(ctx *context.Context) { | |||||||
| 		page = 1 | 		page = 1 | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	commits, err := ctx.Repo.GitRepo.CommitsByFileAndRange(branchName, fileName, page) | 	commits, err := ctx.Repo.GitRepo.CommitsByFileAndRange(ctx.Repo.RefName, fileName, page) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		ctx.ServerError("CommitsByFileAndRange", err) | 		ctx.ServerError("CommitsByFileAndRange", err) | ||||||
| 		return | 		return | ||||||
| @@ -239,7 +238,7 @@ func FileHistory(ctx *context.Context) { | |||||||
| 	ctx.Data["Reponame"] = ctx.Repo.Repository.Name | 	ctx.Data["Reponame"] = ctx.Repo.Repository.Name | ||||||
| 	ctx.Data["FileName"] = fileName | 	ctx.Data["FileName"] = fileName | ||||||
| 	ctx.Data["CommitCount"] = commitsCount | 	ctx.Data["CommitCount"] = commitsCount | ||||||
| 	ctx.Data["Branch"] = branchName | 	ctx.Data["RefName"] = ctx.Repo.RefName | ||||||
|  |  | ||||||
| 	pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5) | 	pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5) | ||||||
| 	pager.SetDefaultParams(ctx) | 	pager.SetDefaultParams(ctx) | ||||||
|   | |||||||
| @@ -371,7 +371,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st | |||||||
| 	} | 	} | ||||||
| 	defer dataRc.Close() | 	defer dataRc.Close() | ||||||
|  |  | ||||||
| 	ctx.Data["Title"] = ctx.Data["Title"].(string) + " - " + ctx.Repo.TreePath + " at " + ctx.Repo.BranchName | 	ctx.Data["Title"] = ctx.Data["Title"].(string) + " - " + ctx.Tr("repo.file.title", ctx.Repo.TreePath, ctx.Repo.RefName) | ||||||
|  |  | ||||||
| 	fileSize := blob.Size() | 	fileSize := blob.Size() | ||||||
| 	ctx.Data["FileIsSymlink"] = entry.IsLink() | 	ctx.Data["FileIsSymlink"] = entry.IsLink() | ||||||
|   | |||||||
| @@ -7,9 +7,9 @@ | |||||||
| 				{{if $release}} | 				{{if $release}} | ||||||
| 					{{.root.i18n.Tr "repo.release.compare"}} | 					{{.root.i18n.Tr "repo.release.compare"}} | ||||||
| 				{{else}} | 				{{else}} | ||||||
| 					{{svg "octicon-git-branch"}} | 					{{if .root.IsViewTag}}{{svg "octicon-tag"}}{{else}}{{svg "octicon-git-branch"}}{{end}} | ||||||
| 					{{if .root.IsViewBranch}}{{.root.i18n.Tr "repo.branch"}}{{else}}{{.root.i18n.Tr "repo.tree"}}{{end}}: | 					{{if .root.IsViewBranch}}{{.root.i18n.Tr "repo.branch"}}{{else if .root.IsViewTag}}{{.root.i18n.Tr "repo.tag"}}{{else}}{{.root.i18n.Tr "repo.tree"}}{{end}}: | ||||||
| 					<strong>{{if .root.IsViewBranch}}{{.root.BranchName}}{{else}}{{ShortSha .root.BranchName}}{{end}}</strong> | 					<strong>{{if .root.IsViewBranch}}{{.root.BranchName}}{{else if .root.IsViewTag}}{{.root.TagName}}{{else}}{{ShortSha .root.CommitID}}{{end}}</strong> | ||||||
| 				{{end}} | 				{{end}} | ||||||
| 			</span> | 			</span> | ||||||
| 			{{svg "octicon-triangle-down" 14 "dropdown icon"}} | 			{{svg "octicon-triangle-down" 14 "dropdown icon"}} | ||||||
| @@ -66,8 +66,10 @@ | |||||||
| 						<div class="text small"> | 						<div class="text small"> | ||||||
| 							{{if or .root.IsViewBranch $release}} | 							{{if or .root.IsViewBranch $release}} | ||||||
| 								{{.root.i18n.Tr "repo.branch.create_from" .root.BranchName}} | 								{{.root.i18n.Tr "repo.branch.create_from" .root.BranchName}} | ||||||
|  | 							{{else if .root.IsViewTag}} | ||||||
|  | 								{{.root.i18n.Tr "repo.branch.create_from" .root.TagName}} | ||||||
| 							{{else}} | 							{{else}} | ||||||
| 								{{.root.i18n.Tr "repo.branch.create_from" (ShortSha .root.BranchName)}} | 								{{.root.i18n.Tr "repo.branch.create_from" (ShortSha .root.CommitID)}} | ||||||
| 							{{end}} | 							{{end}} | ||||||
| 						</div> | 						</div> | ||||||
| 					</a> | 					</a> | ||||||
|   | |||||||
| @@ -1,12 +1,11 @@ | |||||||
| <h4 class="ui top attached header commits-table df ac sb"> | <h4 class="ui top attached header commits-table df ac sb"> | ||||||
| 	<div class="commits-table-left df ac"> | 	<div class="commits-table-left df ac"> | ||||||
| 		{{if or .PageIsCommits (gt .CommitCount 0)}} | 		{{if or .PageIsCommits (gt .CommitCount 0)}} | ||||||
| 			{{.CommitCount}} {{.i18n.Tr "repo.commits.commits"}} {{if .Branch}}({{.Branch}}){{end}} | 			{{.CommitCount}} {{.i18n.Tr "repo.commits.commits"}} {{if .RefName}}({{.RefName}}){{end}} | ||||||
| 		{{else if .IsNothingToCompare }} | 		{{else if .IsNothingToCompare}} | ||||||
| 			{{.i18n.Tr "repo.commits.nothing_to_compare" }} {{if .Branch}}({{.Branch}}){{end}} | 			{{.i18n.Tr "repo.commits.nothing_to_compare" }} {{if .RefName}}({{.RefName}}){{end}} | ||||||
|  |  | ||||||
| 		{{else}} | 		{{else}} | ||||||
| 			{{.i18n.Tr "repo.commits.no_commits" $.BaseBranch $.HeadBranch }} {{if .Branch}}({{.Branch}}){{end}} | 			{{.i18n.Tr "repo.commits.no_commits" $.BaseBranch $.HeadBranch}} {{if .RefName}}({{.RefName}}){{end}} | ||||||
| 		{{end}} | 		{{end}} | ||||||
| 	</div> | 	</div> | ||||||
| 	<div class="commits-table-right df ac"> | 	<div class="commits-table-right df ac"> | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
| 		<div class="ui two horizontal center link list"> | 		<div class="ui two horizontal center link list"> | ||||||
| 			{{if and (.Permission.CanRead $.UnitTypeCode) (not .IsEmptyRepo)}} | 			{{if and (.Permission.CanRead $.UnitTypeCode) (not .IsEmptyRepo)}} | ||||||
| 				<div class="item{{if .PageIsCommits}} active{{end}}"> | 				<div class="item{{if .PageIsCommits}} active{{end}}"> | ||||||
| 					<a class="ui" href="{{.RepoLink}}/commits{{if .IsViewBranch}}/branch{{else if .IsViewTag}}/tag{{else if .IsViewCommit}}/commit{{end}}/{{PathEscapeSegments .BranchName}}">{{svg "octicon-history"}} <b>{{.CommitsCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .CommitsCount "repo.commit" "repo.commits") }}</a> | 					<a class="ui" href="{{.RepoLink}}/commits/{{.BranchNameSubURL}}">{{svg "octicon-history"}} <b>{{.CommitsCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .CommitsCount "repo.commit" "repo.commits") }}</a> | ||||||
| 				</div> | 				</div> | ||||||
| 				<div class="item{{if .PageIsBranches}} active{{end}}"> | 				<div class="item{{if .PageIsBranches}} active{{end}}"> | ||||||
| 					<a class="ui" href="{{.RepoLink}}/branches">{{svg "octicon-git-branch"}} <b>{{.BranchesCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .BranchesCount "repo.branch" "repo.branches") }}</a> | 					<a class="ui" href="{{.RepoLink}}/branches">{{svg "octicon-git-branch"}} <b>{{.BranchesCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .BranchesCount "repo.branch" "repo.branches") }}</a> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user