From fc6d80d619d960b340bf1ebc7131add86985e725 Mon Sep 17 00:00:00 2001 From: Tony Tsang Date: Fri, 6 Feb 2015 17:02:32 +0800 Subject: [PATCH] Link to previous commited source file (diff.view_file button) instead of returning 404 for deleted files. --- models/git_diff.go | 8 ++++++++ routers/repo/commit.go | 4 ++++ templates/repo/diff.tmpl | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/models/git_diff.go b/models/git_diff.go index 7e91626f1..9d34ed627 100644 --- a/models/git_diff.go +++ b/models/git_diff.go @@ -60,6 +60,8 @@ type DiffFile struct { Index int Addition, Deletion int Type int + IsCreated bool + IsDeleted bool IsBin bool Sections []*DiffSection } @@ -181,10 +183,16 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff switch { case strings.HasPrefix(scanner.Text(), "new file"): curFile.Type = DIFF_FILE_ADD + curFile.IsDeleted = false + curFile.IsCreated = true case strings.HasPrefix(scanner.Text(), "deleted"): curFile.Type = DIFF_FILE_DEL + curFile.IsCreated = false + curFile.IsDeleted = true case strings.HasPrefix(scanner.Text(), "index"): curFile.Type = DIFF_FILE_CHANGE + curFile.IsCreated = false + curFile.IsDeleted = false } if curFile.Type > 0 { break diff --git a/routers/repo/commit.go b/routers/repo/commit.go index e92ec8c88..5d354c4b5 100644 --- a/routers/repo/commit.go +++ b/routers/repo/commit.go @@ -253,6 +253,9 @@ func Diff(ctx *middleware.Context) { ctx.Data["Parents"] = parents ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0 ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", commitId) + if (commit.ParentCount() > 0) { + ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", parents[0]) + } ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", commitId) ctx.HTML(200, DIFF) } @@ -316,6 +319,7 @@ func CompareDiff(ctx *middleware.Context) { ctx.Data["Diff"] = diff ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0 ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", afterCommitId) + ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", beforeCommitId) ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", afterCommitId) ctx.HTML(200, DIFF) } diff --git a/templates/repo/diff.tmpl b/templates/repo/diff.tmpl index 3d4a8b1fa..443e002d5 100644 --- a/templates/repo/diff.tmpl +++ b/templates/repo/diff.tmpl @@ -89,7 +89,11 @@ {{$.i18n.Tr "repo.diff.bin"}} {{end}} + {{if $file.IsDeleted}} + {{$.i18n.Tr "repo.diff.view_file"}} + {{else}} {{$.i18n.Tr "repo.diff.view_file"}} + {{end}} {{$file.Name}} {{$isImage := (call $.IsImageFile $file.Name)}}