Browse Source

#1790 fast return for too large diff

tags/v0.9.99
Unknwon 8 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 View File

@@ -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 View File

@@ -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 View File

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

Loading…
Cancel
Save