Просмотр исходного кода

Link to previous commited source file (diff.view_file button) instead of returning 404 for deleted files.

Tony Tsang 10 лет назад
Родитель
Сommit
fc6d80d619
3 измененных файлов с 16 добавлено и 0 удалено
  1. 8 0
      models/git_diff.go
  2. 4 0
      routers/repo/commit.go
  3. 4 0
      templates/repo/diff.tmpl

+ 8 - 0
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

+ 4 - 0
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)
 }

+ 4 - 0
templates/repo/diff.tmpl

@@ -89,7 +89,11 @@
                     {{$.i18n.Tr "repo.diff.bin"}}
                     {{end}}
                 </div>
+                {{if $file.IsDeleted}}
+                <a class="btn btn-gray btn-header btn-radius text-black pull-right" rel="nofollow" href="{{$.BeforeSourcePath}}/{{.Name}}">{{$.i18n.Tr "repo.diff.view_file"}}</a>
+                {{else}}
                 <a class="btn btn-gray btn-header btn-radius text-black pull-right" rel="nofollow" href="{{$.SourcePath}}/{{.Name}}">{{$.i18n.Tr "repo.diff.view_file"}}</a>
+                {{end}}
                 <span class="file">{{$file.Name}}</span>
             </div>
             {{$isImage := (call $.IsImageFile $file.Name)}}