|
|
|
@ -20,6 +20,7 @@ import ( |
|
|
|
|
"code.gitea.io/gitea/modules/templates" |
|
|
|
|
"code.gitea.io/gitea/modules/timeutil" |
|
|
|
|
"code.gitea.io/gitea/modules/util" |
|
|
|
|
files_service "code.gitea.io/gitea/services/repository/files" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type blameRow struct { |
|
|
|
@ -247,31 +248,11 @@ func processBlameParts(ctx *context.Context, blameParts []*git.BlamePart) map[st |
|
|
|
|
func renderBlame(ctx *context.Context, blameParts []*git.BlamePart, commitNames map[string]*user_model.UserCommit) { |
|
|
|
|
repoLink := ctx.Repo.RepoLink |
|
|
|
|
|
|
|
|
|
language := "" |
|
|
|
|
|
|
|
|
|
indexFilename, worktree, deleteTemporaryFile, err := ctx.Repo.GitRepo.ReadTreeToTemporaryIndex(ctx.Repo.CommitID) |
|
|
|
|
if err == nil { |
|
|
|
|
defer deleteTemporaryFile() |
|
|
|
|
|
|
|
|
|
filename2attribute2info, err := ctx.Repo.GitRepo.CheckAttribute(git.CheckAttributeOpts{ |
|
|
|
|
CachedOnly: true, |
|
|
|
|
Attributes: []string{"linguist-language", "gitlab-language"}, |
|
|
|
|
Filenames: []string{ctx.Repo.TreePath}, |
|
|
|
|
IndexFile: indexFilename, |
|
|
|
|
WorkTree: worktree, |
|
|
|
|
}) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Error("Unable to load attributes for %-v:%s. Error: %v", ctx.Repo.Repository, ctx.Repo.TreePath, err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
language = filename2attribute2info[ctx.Repo.TreePath]["linguist-language"] |
|
|
|
|
if language == "" || language == "unspecified" { |
|
|
|
|
language = filename2attribute2info[ctx.Repo.TreePath]["gitlab-language"] |
|
|
|
|
} |
|
|
|
|
if language == "unspecified" { |
|
|
|
|
language = "" |
|
|
|
|
} |
|
|
|
|
language, err := files_service.TryGetContentLanguage(ctx.Repo.GitRepo, ctx.Repo.CommitID, ctx.Repo.TreePath) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Error("Unable to get file language for %-v:%s. Error: %v", ctx.Repo.Repository, ctx.Repo.TreePath, err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
lines := make([]string, 0) |
|
|
|
|
rows := make([]*blameRow, 0) |
|
|
|
|
escapeStatus := &charset.EscapeStatus{} |
|
|
|
|