summaryrefslogtreecommitdiffstats
path: root/routers/repo
diff options
context:
space:
mode:
Diffstat (limited to 'routers/repo')
-rw-r--r--routers/repo/commit.go24
-rw-r--r--routers/repo/compare.go77
-rw-r--r--routers/repo/pull.go25
3 files changed, 50 insertions, 76 deletions
diff --git a/routers/repo/commit.go b/routers/repo/commit.go
index 919ebabf42..3cedf70319 100644
--- a/routers/repo/commit.go
+++ b/routers/repo/commit.go
@@ -239,24 +239,18 @@ func Diff(ctx *context.Context) {
ctx.Data["CommitID"] = commitID
ctx.Data["Username"] = userName
ctx.Data["Reponame"] = repoName
- ctx.Data["IsImageFile"] = commit.IsImageFile
- ctx.Data["ImageInfo"] = func(name string) *git.ImageMetaData {
- result, err := commit.ImageInfo(name)
- if err != nil {
- log.Error("ImageInfo failed: %v", err)
- return nil
- }
- return result
- }
- ctx.Data["ImageInfoBase"] = ctx.Data["ImageInfo"]
+
+ var parentCommit *git.Commit
if commit.ParentCount() > 0 {
- parentCommit, err := ctx.Repo.GitRepo.GetCommit(parents[0])
+ parentCommit, err = ctx.Repo.GitRepo.GetCommit(parents[0])
if err != nil {
ctx.NotFound("GetParentCommit", err)
return
}
- ctx.Data["ImageInfo"] = parentCommit.ImageInfo
}
+ setImageCompareContext(ctx, parentCommit, commit)
+ headTarget := path.Join(userName, repoName)
+ setPathsCompareContext(ctx, parentCommit, commit, headTarget)
ctx.Data["Title"] = commit.Summary() + " ยท " + base.ShortSha(commitID)
ctx.Data["Commit"] = commit
ctx.Data["Verification"] = models.ParseCommitWithSignature(commit)
@@ -264,8 +258,6 @@ func Diff(ctx *context.Context) {
ctx.Data["Diff"] = diff
ctx.Data["Parents"] = parents
ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0
- ctx.Data["SourcePath"] = setting.AppSubURL + "/" + path.Join(userName, repoName, "src", "commit", commitID)
- ctx.Data["RawPath"] = setting.AppSubURL + "/" + path.Join(userName, repoName, "raw", "commit", commitID)
note := &git.Note{}
err = git.GetNote(ctx.Repo.GitRepo, commitID, note)
@@ -275,10 +267,6 @@ func Diff(ctx *context.Context) {
ctx.Data["NoteAuthor"] = models.ValidateCommitWithEmail(note.Commit)
}
- if commit.ParentCount() > 0 {
- ctx.Data["BeforeSourcePath"] = setting.AppSubURL + "/" + path.Join(userName, repoName, "src", "commit", parents[0])
- ctx.Data["BeforeRawPath"] = setting.AppSubURL + "/" + path.Join(userName, repoName, "raw", "commit", parents[0])
- }
ctx.Data["BranchName"], err = commit.GetBranchName()
if err != nil {
ctx.ServerError("commit.GetBranchName", err)
diff --git a/routers/repo/compare.go b/routers/repo/compare.go
index 7c55dfca30..f8534f68b7 100644
--- a/routers/repo/compare.go
+++ b/routers/repo/compare.go
@@ -5,6 +5,7 @@
package repo
import (
+ "fmt"
"path"
"strings"
@@ -21,6 +22,45 @@ const (
tplCompare base.TplName = "repo/diff/compare"
)
+// setPathsCompareContext sets context data for source and raw paths
+func setPathsCompareContext(ctx *context.Context, base *git.Commit, head *git.Commit, headTarget string) {
+ sourcePath := setting.AppSubURL + "/%s/src/commit/%s"
+ rawPath := setting.AppSubURL + "/%s/raw/commit/%s"
+
+ ctx.Data["SourcePath"] = fmt.Sprintf(sourcePath, headTarget, head.ID)
+ ctx.Data["RawPath"] = fmt.Sprintf(rawPath, headTarget, head.ID)
+ if base != nil {
+ baseTarget := path.Join(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)
+ ctx.Data["BeforeSourcePath"] = fmt.Sprintf(sourcePath, baseTarget, base.ID)
+ ctx.Data["BeforeRawPath"] = fmt.Sprintf(rawPath, baseTarget, base.ID)
+ }
+}
+
+// setImageCompareContext sets context data that is required by image compare template
+func setImageCompareContext(ctx *context.Context, base *git.Commit, head *git.Commit) {
+ ctx.Data["IsImageFileInHead"] = head.IsImageFile
+ ctx.Data["IsImageFileInBase"] = base.IsImageFile
+ ctx.Data["ImageInfoBase"] = func(name string) *git.ImageMetaData {
+ if base == nil {
+ return nil
+ }
+ result, err := base.ImageInfo(name)
+ if err != nil {
+ log.Error("ImageInfo failed: %v", err)
+ return nil
+ }
+ return result
+ }
+ ctx.Data["ImageInfo"] = func(name string) *git.ImageMetaData {
+ result, err := head.ImageInfo(name)
+ if err != nil {
+ log.Error("ImageInfo failed: %v", err)
+ return nil
+ }
+ return result
+ }
+}
+
// ParseCompareInfo parse compare info between two commit for preparing comparing references
func ParseCompareInfo(ctx *context.Context) (*models.User, *models.Repository, *git.Repository, *git.CompareInfo, string, string) {
baseRepo := ctx.Repo.Repository
@@ -291,43 +331,10 @@ func PrepareCompareDiff(
ctx.Data["title"] = title
ctx.Data["Username"] = headUser.Name
ctx.Data["Reponame"] = headRepo.Name
- ctx.Data["IsImageFile"] = headCommit.IsImageFile
- ctx.Data["ImageInfo"] = func(name string) *git.ImageMetaData {
- result, err := headCommit.ImageInfo(name)
- if err != nil {
- log.Error("ImageInfo failed: %v", err)
- return nil
- }
- return result
- }
- ctx.Data["FileExistsInBaseCommit"] = func(filename string) bool {
- result, err := baseCommit.HasFile(filename)
- if err != nil {
- log.Error(
- "Error while checking if file \"%s\" exists in base commit \"%s\" (repo: %s): %v",
- filename,
- baseCommit,
- baseGitRepo.Path,
- err)
- return false
- }
- return result
- }
- ctx.Data["ImageInfoBase"] = func(name string) *git.ImageMetaData {
- result, err := baseCommit.ImageInfo(name)
- if err != nil {
- log.Error("ImageInfo failed: %v", err)
- return nil
- }
- return result
- }
+ setImageCompareContext(ctx, baseCommit, headCommit)
headTarget := path.Join(headUser.Name, repo.Name)
- baseTarget := path.Join(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)
- ctx.Data["SourcePath"] = setting.AppSubURL + "/" + path.Join(headTarget, "src", "commit", headCommitID)
- ctx.Data["RawPath"] = setting.AppSubURL + "/" + path.Join(headTarget, "raw", "commit", headCommitID)
- ctx.Data["BeforeSourcePath"] = setting.AppSubURL + "/" + path.Join(baseTarget, "src", "commit", baseCommitID)
- ctx.Data["BeforeRawPath"] = setting.AppSubURL + "/" + path.Join(baseTarget, "raw", "commit", baseCommitID)
+ setPathsCompareContext(ctx, baseCommit, headCommit, headTarget)
return false
}
diff --git a/routers/repo/pull.go b/routers/repo/pull.go
index 72d2ffcaa7..7af01c46ba 100644
--- a/routers/repo/pull.go
+++ b/routers/repo/pull.go
@@ -564,29 +564,8 @@ func ViewPullFiles(ctx *context.Context) {
return
}
- ctx.Data["IsImageFile"] = commit.IsImageFile
- ctx.Data["ImageInfoBase"] = func(name string) *git.ImageMetaData {
- result, err := baseCommit.ImageInfo(name)
- if err != nil {
- log.Error("ImageInfo failed: %v", err)
- return nil
- }
- return result
- }
- ctx.Data["ImageInfo"] = func(name string) *git.ImageMetaData {
- result, err := commit.ImageInfo(name)
- if err != nil {
- log.Error("ImageInfo failed: %v", err)
- return nil
- }
- return result
- }
-
- baseTarget := path.Join(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)
- ctx.Data["SourcePath"] = setting.AppSubURL + "/" + path.Join(headTarget, "src", "commit", endCommitID)
- ctx.Data["RawPath"] = setting.AppSubURL + "/" + path.Join(headTarget, "raw", "commit", endCommitID)
- ctx.Data["BeforeSourcePath"] = setting.AppSubURL + "/" + path.Join(baseTarget, "src", "commit", startCommitID)
- ctx.Data["BeforeRawPath"] = setting.AppSubURL + "/" + path.Join(baseTarget, "raw", "commit", startCommitID)
+ setImageCompareContext(ctx, baseCommit, commit)
+ setPathsCompareContext(ctx, baseCommit, commit, headTarget)
ctx.Data["RequireHighlightJS"] = true
ctx.Data["RequireTribute"] = true