Browse Source

#1790 fast return for too large diff

Unknwon 9 years ago
parent
commit
6599869f28
3 changed files with 5 additions and 13 deletions
  1. 1 1
      gogs.go
  2. 3 11
      models/git_diff.go
  3. 1 1
      templates/.VERSION

+ 1 - 1
gogs.go

@@ -17,7 +17,7 @@ import (
 	"github.com/gogits/gogs/modules/setting"
 )
 
-const APP_VER = "0.6.16.1015 Beta"
+const APP_VER = "0.6.16.1017 Beta"
 
 func init() {
 	runtime.GOMAXPROCS(runtime.NumCPU())

+ 3 - 11
models/git_diff.go

@@ -86,7 +86,6 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 		}
 
 		leftLine, rightLine int
-		isTooLong           bool
 		// FIXME: Should use cache in the future.
 		buf bytes.Buffer
 	)
@@ -107,9 +106,10 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 		i = i + 1
 
 		// Diff data too large, we only show the first about maxlines lines
-		if i == maxlines {
-			isTooLong = true
+		if i >= maxlines {
 			log.Warn("Diff data too large")
+			diff.Files = nil
+			return diff, nil
 		}
 
 		switch {
@@ -120,10 +120,6 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 			curSection.Lines = append(curSection.Lines, diffLine)
 			continue
 		case line[0] == '@':
-			if isTooLong {
-				break
-			}
-
 			curSection = &DiffSection{}
 			curFile.Sections = append(curFile.Sections, curSection)
 			ss := strings.Split(line, "@@")
@@ -162,10 +158,6 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 
 		// Get new file.
 		if strings.HasPrefix(line, DIFF_HEAD) {
-			if isTooLong {
-				break
-			}
-
 			beg := len(DIFF_HEAD)
 			a := line[beg : (len(line)-beg)/2+beg]
 

+ 1 - 1
templates/.VERSION

@@ -1 +1 @@
-0.6.16.1015 Beta
+0.6.16.1017 Beta