diff --git a/modules/context/repo.go b/modules/context/repo.go index 3be33f2483..e3d66fc3b9 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -59,6 +59,7 @@ type Repository struct { Commit *git.Commit Tag *git.Tag GitRepo *git.Repository + RefName string BranchName string TagName string TreePath string @@ -191,9 +192,9 @@ func (r *Repository) BranchNameSubURL() string { case r.IsViewBranch: return "branch/" + util.PathEscapeSegments(r.BranchName) case r.IsViewTag: - return "tag/" + util.PathEscapeSegments(r.BranchName) + return "tag/" + util.PathEscapeSegments(r.TagName) case r.IsViewCommit: - return "commit/" + util.PathEscapeSegments(r.BranchName) + return "commit/" + util.PathEscapeSegments(r.CommitID) } log.Error("Unknown view type for repo: %v", r) return "" @@ -563,8 +564,6 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) { ctx.Data["Branches"] = brs ctx.Data["BranchesCount"] = len(brs) - ctx.Data["TagName"] = ctx.Repo.TagName - // If not branch selected, try default one. // If default branch doesn't exists, fall back to some other branch. if len(ctx.Repo.BranchName) == 0 { @@ -573,9 +572,9 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) { } else if len(brs) > 0 { ctx.Repo.BranchName = brs[0] } + ctx.Repo.RefName = 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. 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. if len(ctx.Params("*")) == 0 { refName = ctx.Repo.Repository.DefaultBranch - ctx.Repo.BranchName = refName if !ctx.Repo.GitRepo.IsBranchExist(refName) { brs, _, err := ctx.Repo.GitRepo.GetBranches(0, 0) if err != nil { @@ -795,6 +793,8 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context } refName = brs[0] } + ctx.Repo.RefName = refName + ctx.Repo.BranchName = refName ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName) if err != nil { ctx.ServerError("GetBranchCommit", err) @@ -805,7 +805,7 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context } else { refName = getRefName(ctx, refType) - ctx.Repo.BranchName = refName + ctx.Repo.RefName = refName isRenamedBranch, has := ctx.Data["IsRenamedBranch"].(bool) if isRenamedBranch && has { 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) { ctx.Repo.IsViewBranch = true + ctx.Repo.BranchName = refName ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName) if err != nil { @@ -827,6 +828,8 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context } else if refType.RefTypeIncludesTags() && ctx.Repo.GitRepo.IsTagExist(refName) { ctx.Repo.IsViewTag = true + ctx.Repo.TagName = refName + ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetTagCommit(refName) if err != nil { ctx.ServerError("GetTagCommit", err) @@ -870,6 +873,7 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context ctx.Data["BranchName"] = ctx.Repo.BranchName ctx.Data["BranchNameSubURL"] = ctx.Repo.BranchNameSubURL() + ctx.Data["TagName"] = ctx.Repo.TagName ctx.Data["CommitID"] = ctx.Repo.CommitID ctx.Data["TreePath"] = ctx.Repo.TreePath ctx.Data["IsViewBranch"] = ctx.Repo.IsViewBranch diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 062ce02932..66996b2014 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -971,6 +971,7 @@ release = Release releases = Releases tag = Tag released_this = released this +file.title = %s at %s file_raw = Raw file_history = History file_view_source = View Source diff --git a/routers/web/repo/branch.go b/routers/web/repo/branch.go index 10557ff3db..27cd06023d 100644 --- a/routers/web/repo/branch.go +++ b/routers/web/repo/branch.go @@ -344,17 +344,15 @@ func CreateBranch(ctx *context.Context) { var err error if form.CreateTag { - if ctx.Repo.IsViewTag { - err = release_service.CreateNewTag(ctx.User, ctx.Repo.Repository, ctx.Repo.CommitID, form.NewBranchName, "") - } else { - err = release_service.CreateNewTag(ctx.User, ctx.Repo.Repository, ctx.Repo.BranchName, form.NewBranchName, "") + target := ctx.Repo.CommitID + if ctx.Repo.IsViewBranch { + target = ctx.Repo.BranchName } + err = release_service.CreateNewTag(ctx.User, ctx.Repo.Repository, target, form.NewBranchName, "") } else if ctx.Repo.IsViewBranch { 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 { - 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 models.IsErrTagAlreadyExists(err) { diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index 06cce92417..c9e2b94f23 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -77,7 +77,7 @@ func Commits(ctx *context.Context) { ctx.Data["Username"] = ctx.Repo.Owner.Name ctx.Data["Reponame"] = ctx.Repo.Repository.Name 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.SetDefaultParams(ctx) @@ -153,7 +153,7 @@ func Graph(ctx *context.Context) { ctx.Data["Username"] = ctx.Repo.Owner.Name ctx.Data["Reponame"] = ctx.Repo.Repository.Name 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.AddParam(ctx, "mode", "Mode") 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["Reponame"] = ctx.Repo.Repository.Name - ctx.Data["Branch"] = ctx.Repo.BranchName + ctx.Data["RefName"] = ctx.Repo.RefName ctx.HTML(http.StatusOK, tplCommits) } @@ -213,8 +213,7 @@ func FileHistory(ctx *context.Context) { return } - branchName := ctx.Repo.BranchName - commitsCount, err := ctx.Repo.GitRepo.FileCommitsCount(branchName, fileName) + commitsCount, err := ctx.Repo.GitRepo.FileCommitsCount(ctx.Repo.RefName, fileName) if err != nil { ctx.ServerError("FileCommitsCount", err) return @@ -228,7 +227,7 @@ func FileHistory(ctx *context.Context) { 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 { ctx.ServerError("CommitsByFileAndRange", err) return @@ -239,7 +238,7 @@ func FileHistory(ctx *context.Context) { ctx.Data["Reponame"] = ctx.Repo.Repository.Name ctx.Data["FileName"] = fileName 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.SetDefaultParams(ctx) diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 938292a37a..d455dc1039 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -371,7 +371,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st } 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() ctx.Data["FileIsSymlink"] = entry.IsLink() diff --git a/templates/repo/branch_dropdown.tmpl b/templates/repo/branch_dropdown.tmpl index a2115729b2..a6120483b5 100644 --- a/templates/repo/branch_dropdown.tmpl +++ b/templates/repo/branch_dropdown.tmpl @@ -7,9 +7,9 @@ {{if $release}} {{.root.i18n.Tr "repo.release.compare"}} {{else}} - {{svg "octicon-git-branch"}} - {{if .root.IsViewBranch}}{{.root.i18n.Tr "repo.branch"}}{{else}}{{.root.i18n.Tr "repo.tree"}}{{end}}: - {{if .root.IsViewBranch}}{{.root.BranchName}}{{else}}{{ShortSha .root.BranchName}}{{end}} + {{if .root.IsViewTag}}{{svg "octicon-tag"}}{{else}}{{svg "octicon-git-branch"}}{{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}}: + {{if .root.IsViewBranch}}{{.root.BranchName}}{{else if .root.IsViewTag}}{{.root.TagName}}{{else}}{{ShortSha .root.CommitID}}{{end}} {{end}} {{svg "octicon-triangle-down" 14 "dropdown icon"}} @@ -66,8 +66,10 @@