Make it compile
parent
3a27a0c146
commit
ac3a653442
|
@ -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,28 +228,29 @@ 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 {
|
||||
LeftIdx int
|
||||
LeftIdx int
|
||||
RightIdx int
|
||||
Type int
|
||||
Content string
|
||||
Type int
|
||||
Content string
|
||||
}
|
||||
|
||||
type DiffSection struct {
|
||||
Name string
|
||||
Name string
|
||||
Lines []*DiffLine
|
||||
}
|
||||
|
||||
|
@ -257,7 +258,7 @@ type DiffFile struct {
|
|||
Name string
|
||||
Addition, Deletion int
|
||||
Type int
|
||||
Sections []*DiffSection
|
||||
Sections []*DiffSection
|
||||
}
|
||||
|
||||
type Diff struct {
|
||||
|
@ -269,15 +270,17 @@ 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)}
|
||||
diff := &Diff{Files: make([]*DiffFile, 0)}
|
||||
var i int
|
||||
for scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
|
@ -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,
|
||||
Sections:make([]*DiffSection, 0),
|
||||
Name: a[strings.Index(a, "/")+1:],
|
||||
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()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue