mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-18 06:32:51 +02:00
fix getDiffLineSectionInfo
This commit is contained in:
parent
8f8ca4e510
commit
806f915b3c
@ -99,9 +99,9 @@ func GetRepoRawDiffForFile(repo *Repository, startCommit, endCommit string, diff
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParseDiffHunkString parse the diffhunk content and return
|
// ParseDiffHunkString parse the diff hunk content and return
|
||||||
func ParseDiffHunkString(diffhunk string) (leftLine, leftHunk, rightLine, righHunk int) {
|
func ParseDiffHunkString(diffHunk string) (leftLine, leftHunk, rightLine, rightHunk int) {
|
||||||
ss := strings.Split(diffhunk, "@@")
|
ss := strings.Split(diffHunk, "@@")
|
||||||
ranges := strings.Split(ss[1][1:], " ")
|
ranges := strings.Split(ss[1][1:], " ")
|
||||||
leftRange := strings.Split(ranges[0], ",")
|
leftRange := strings.Split(ranges[0], ",")
|
||||||
leftLine, _ = strconv.Atoi(leftRange[0][1:])
|
leftLine, _ = strconv.Atoi(leftRange[0][1:])
|
||||||
@ -112,14 +112,21 @@ func ParseDiffHunkString(diffhunk string) (leftLine, leftHunk, rightLine, righHu
|
|||||||
rightRange := strings.Split(ranges[1], ",")
|
rightRange := strings.Split(ranges[1], ",")
|
||||||
rightLine, _ = strconv.Atoi(rightRange[0])
|
rightLine, _ = strconv.Atoi(rightRange[0])
|
||||||
if len(rightRange) > 1 {
|
if len(rightRange) > 1 {
|
||||||
righHunk, _ = strconv.Atoi(rightRange[1])
|
rightHunk, _ = strconv.Atoi(rightRange[1])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.Debug("Parse line number failed: %v", diffhunk)
|
log.Debug("Parse line number failed: %v", diffHunk)
|
||||||
rightLine = leftLine
|
rightLine = leftLine
|
||||||
righHunk = leftHunk
|
rightHunk = leftHunk
|
||||||
}
|
}
|
||||||
return leftLine, leftHunk, rightLine, righHunk
|
if rightLine == 0 {
|
||||||
|
// "git diff" outputs 2 different formats for the same change "OLD" => "A\nB\nC"
|
||||||
|
// * "@@ -1 +1,3 @@": the expected result
|
||||||
|
// * "@@ -1,1 +0,4 @@": the "0" means "insert before the first line"
|
||||||
|
rightLine++
|
||||||
|
rightHunk--
|
||||||
|
}
|
||||||
|
return leftLine, leftHunk, rightLine, rightHunk
|
||||||
}
|
}
|
||||||
|
|
||||||
// Example: @@ -1,8 +1,9 @@ => [..., 1, 8, 1, 9]
|
// Example: @@ -1,8 +1,9 @@ => [..., 1, 8, 1, 9]
|
||||||
|
@ -179,7 +179,7 @@ func (d *DiffLine) GetExpandDirection() DiffLineExpandDirection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getDiffLineSectionInfo(treePath, line string, lastLeftIdx, lastRightIdx int) *DiffLineSectionInfo {
|
func getDiffLineSectionInfo(treePath, line string, lastLeftIdx, lastRightIdx int) *DiffLineSectionInfo {
|
||||||
leftLine, leftHunk, rightLine, righHunk := git.ParseDiffHunkString(line)
|
leftLine, leftHunk, rightLine, rightHunk := git.ParseDiffHunkString(line)
|
||||||
|
|
||||||
return &DiffLineSectionInfo{
|
return &DiffLineSectionInfo{
|
||||||
Path: treePath,
|
Path: treePath,
|
||||||
@ -188,7 +188,7 @@ func getDiffLineSectionInfo(treePath, line string, lastLeftIdx, lastRightIdx int
|
|||||||
LeftIdx: leftLine,
|
LeftIdx: leftLine,
|
||||||
RightIdx: rightLine,
|
RightIdx: rightLine,
|
||||||
LeftHunkSize: leftHunk,
|
LeftHunkSize: leftHunk,
|
||||||
RightHunkSize: righHunk,
|
RightHunkSize: rightHunk,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -856,6 +856,7 @@ func parseHunks(ctx context.Context, curFile *DiffFile, maxLines, maxLineCharact
|
|||||||
lastLeftIdx = -1
|
lastLeftIdx = -1
|
||||||
curFile.Sections = append(curFile.Sections, curSection)
|
curFile.Sections = append(curFile.Sections, curSection)
|
||||||
|
|
||||||
|
// FIXME: the "-1" can't be right, these "line idx" are all 1-based, maybe there are other bugs that covers this bug.
|
||||||
lineSectionInfo := getDiffLineSectionInfo(curFile.Name, line, leftLine-1, rightLine-1)
|
lineSectionInfo := getDiffLineSectionInfo(curFile.Name, line, leftLine-1, rightLine-1)
|
||||||
diffLine := &DiffLine{
|
diffLine := &DiffLine{
|
||||||
Type: DiffLineSection,
|
Type: DiffLineSection,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user