diff options
Diffstat (limited to 'routers/repo')
-rw-r--r-- | routers/repo/commit.go | 24 | ||||
-rw-r--r-- | routers/repo/compare.go | 77 | ||||
-rw-r--r-- | routers/repo/pull.go | 25 |
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 |