mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Make it compile
This commit is contained in:
		@@ -5,14 +5,14 @@
 | 
			
		||||
package models
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"container/list"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"path"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"io"
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/exec"
 | 
			
		||||
	"path"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/gogits/git"
 | 
			
		||||
)
 | 
			
		||||
@@ -228,17 +228,18 @@ func GetCommits(userName, reposName, branchname string) (*list.List, error) {
 | 
			
		||||
	return r.AllCommits()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Diff line types.
 | 
			
		||||
const (
 | 
			
		||||
	PlainLine = iota + 1
 | 
			
		||||
	AddLine
 | 
			
		||||
	DelLine
 | 
			
		||||
	SectionLine
 | 
			
		||||
	DIFF_LINE_PLAIN = iota + 1
 | 
			
		||||
	DIFF_LINE_ADD
 | 
			
		||||
	DIFF_LINE_DEL
 | 
			
		||||
	DIFF_LINE_SECTION
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	AddFile = iota + 1
 | 
			
		||||
	ChangeFile
 | 
			
		||||
	DelFile
 | 
			
		||||
	DIFF_FILE_ADD = iota + 1
 | 
			
		||||
	DIFF_FILE_CHANGE
 | 
			
		||||
	DIFF_FILE_DEL
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type DiffLine struct {
 | 
			
		||||
@@ -269,13 +270,15 @@ func (diff *Diff) NumFiles() int {
 | 
			
		||||
	return len(diff.Files)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const diffHead = "diff --git "
 | 
			
		||||
const DIFF_HEAD = "diff --git "
 | 
			
		||||
 | 
			
		||||
func ParsePatch(reader io.Reader) (*Diff, error) {
 | 
			
		||||
	scanner := bufio.NewScanner(reader)
 | 
			
		||||
	var totalAdd, totalDel int
 | 
			
		||||
	var curFile *DiffFile
 | 
			
		||||
	var curSection * DiffSection
 | 
			
		||||
	curSection := &DiffSection{
 | 
			
		||||
		Lines: make([]*DiffLine, 0, 10),
 | 
			
		||||
	}
 | 
			
		||||
	//var leftLine, rightLine int
 | 
			
		||||
	diff := &Diff{Files: make([]*DiffFile, 0)}
 | 
			
		||||
	var i int
 | 
			
		||||
@@ -287,50 +290,48 @@ func ParsePatch(reader io.Reader) (*Diff, error) {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if line[0] == ' ' {
 | 
			
		||||
			diffLine := &DiffLine{Type: PlainLine, Content:line}
 | 
			
		||||
			diffLine := &DiffLine{Type: DIFF_LINE_PLAIN, Content: line}
 | 
			
		||||
			curSection.Lines = append(curSection.Lines, diffLine)
 | 
			
		||||
			continue
 | 
			
		||||
		} else if line[0] == '@' {
 | 
			
		||||
			curSection = &DiffSection{}
 | 
			
		||||
			curFile.Sections = append(curFile.Sections, curSection)
 | 
			
		||||
			ss := strings.Split(line, "@@")
 | 
			
		||||
			diffLine := &DiffLine{Type: SectionLine, Content:"@@ "+ss[len(ss)-2]}
 | 
			
		||||
			diffLine := &DiffLine{Type: DIFF_LINE_SECTION, Content: "@@" + ss[len(ss)-2] + "@@"}
 | 
			
		||||
			curSection.Lines = append(curSection.Lines, diffLine)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			diffLine = &DiffLine{Type: PlainLine, Content:ss[len(ss)-1]}
 | 
			
		||||
			diffLine = &DiffLine{Type: DIFF_LINE_PLAIN, Content: ss[len(ss)-1]}
 | 
			
		||||
			curSection.Lines = append(curSection.Lines, diffLine)
 | 
			
		||||
			continue
 | 
			
		||||
		} else if line[0] == '+' {
 | 
			
		||||
			diffLine := &DiffLine{Type: AddLine, Content:line}
 | 
			
		||||
			diffLine := &DiffLine{Type: DIFF_LINE_ADD, Content: line}
 | 
			
		||||
			curSection.Lines = append(curSection.Lines, diffLine)
 | 
			
		||||
			continue
 | 
			
		||||
		} else if line[0] == '-' {
 | 
			
		||||
			diffLine := &DiffLine{Type: DelLine, Content:line}
 | 
			
		||||
			diffLine := &DiffLine{Type: DIFF_LINE_DEL, Content: line}
 | 
			
		||||
			curSection.Lines = append(curSection.Lines, diffLine)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if strings.HasPrefix(line, diffHead) {
 | 
			
		||||
		if strings.HasPrefix(line, DIFF_HEAD) {
 | 
			
		||||
			if curFile != nil {
 | 
			
		||||
				curFile.Addition, totalAdd = totalAdd, 0
 | 
			
		||||
				curFile.Deletion, totalDel = totalDel, 0
 | 
			
		||||
				curFile = nil
 | 
			
		||||
			}
 | 
			
		||||
			fs := strings.Split(line[len(diffHead):], " ")
 | 
			
		||||
			fs := strings.Split(line[len(DIFF_HEAD):], " ")
 | 
			
		||||
			a := fs[0]
 | 
			
		||||
 | 
			
		||||
			curFile = &DiffFile{
 | 
			
		||||
				Name:     a[strings.Index(a, "/")+1:],
 | 
			
		||||
				Type: ChangeFile,
 | 
			
		||||
				Type:     DIFF_FILE_CHANGE,
 | 
			
		||||
				Sections: make([]*DiffSection, 0),
 | 
			
		||||
			}
 | 
			
		||||
			diff.Files = append(diff.Files, curFile)
 | 
			
		||||
			scanner.Scan()
 | 
			
		||||
			scanner.Scan()
 | 
			
		||||
			if scanner.Text() == "--- /dev/null" {
 | 
			
		||||
				curFile.Type = AddFile
 | 
			
		||||
				curFile.Type = DIFF_FILE_ADD
 | 
			
		||||
			}
 | 
			
		||||
			scanner.Scan()
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user