@@ -99,9 +99,9 @@ func GetRepoRawDiffForFile(repo *Repository, startCommit, endCommit string, diff
9999	return  nil 
100100}
101101
102- // ParseDiffHunkString parse the diffhunk  content and return 
103- func  ParseDiffHunkString (diffhunk  string ) (leftLine , leftHunk , rightLine , righHunk  int ) {
104- 	ss  :=  strings .Split (diffhunk , "@@" )
102+ // ParseDiffHunkString parse the diff hunk  content and return 
103+ func  ParseDiffHunkString (diffHunk  string ) (leftLine , leftHunk , rightLine , rightHunk  int ) {
104+ 	ss  :=  strings .Split (diffHunk , "@@" )
105105	ranges  :=  strings .Split (ss [1 ][1 :], " " )
106106	leftRange  :=  strings .Split (ranges [0 ], "," )
107107	leftLine , _  =  strconv .Atoi (leftRange [0 ][1 :])
@@ -112,14 +112,21 @@ func ParseDiffHunkString(diffhunk string) (leftLine, leftHunk, rightLine, righHu
112112		rightRange  :=  strings .Split (ranges [1 ], "," )
113113		rightLine , _  =  strconv .Atoi (rightRange [0 ])
114114		if  len (rightRange ) >  1  {
115- 			righHunk , _  =  strconv .Atoi (rightRange [1 ])
115+ 			rightHunk , _  =  strconv .Atoi (rightRange [1 ])
116116		}
117117	} else  {
118- 		log .Debug ("Parse line number failed: %v" , diffhunk )
118+ 		log .Debug ("Parse line number failed: %v" , diffHunk )
119119		rightLine  =  leftLine 
120- 		righHunk  =  leftHunk 
120+ 		rightHunk  =  leftHunk 
121121	}
122- 	return  leftLine , leftHunk , rightLine , righHunk 
122+ 	if  rightLine  ==  0  {
123+ 		// "git diff" outputs 2 different formats for the same change "OLD" => "A\nB\nC" 
124+ 		// * "@@ -1 +1,3 @@": the expected result 
125+ 		// * "@@ -1,1 +0,4 @@": the "0" means "insert before the first line" 
126+ 		rightLine ++ 
127+ 		rightHunk -- 
128+ 	}
129+ 	return  leftLine , leftHunk , rightLine , rightHunk 
123130}
124131
125132// Example: @@ -1,8 +1,9 @@ => [..., 1, 8, 1, 9] 
0 commit comments