Skip to content

Commit d9b0834

Browse files
committed
Handle rename-and-mode-change case (verbosely for now)
1 parent 640c65b commit d9b0834

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

diff/parse.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -407,10 +407,27 @@ func handleEmpty(fd *FileDiff) (wasEmpty bool) {
407407
fd.NewName = names[1]
408408
}
409409
return true
410-
case lineCount == 6 && strings.HasPrefix(fd.Extended[5], "Binary files ") && strings.HasPrefix(fd.Extended[2], "rename from ") && strings.HasPrefix(fd.Extended[3], "rename to "):
410+
case lineCount == 6 && strings.HasPrefix(fd.Extended[2], "rename from ") && strings.HasPrefix(fd.Extended[3], "rename to ") && strings.HasPrefix(fd.Extended[5], "Binary files "):
411411
names := strings.SplitN(fd.Extended[0][len("diff --git "):], " ", 2)
412-
fd.OrigName = names[0]
413-
fd.NewName = names[1]
412+
fd.OrigName, err = strconv.Unquote(names[0])
413+
if err != nil {
414+
fd.OrigName = names[0]
415+
}
416+
fd.NewName, err = strconv.Unquote(names[1])
417+
if err != nil {
418+
fd.NewName = names[1]
419+
}
420+
return true
421+
case lineCount == 6 && strings.HasPrefix(fd.Extended[4], "rename from ") && strings.HasPrefix(fd.Extended[5], "rename to "):
422+
names := strings.SplitN(fd.Extended[0][len("diff --git "):], " ", 2)
423+
fd.OrigName, err = strconv.Unquote(names[0])
424+
if err != nil {
425+
fd.OrigName = names[0]
426+
}
427+
fd.NewName, err = strconv.Unquote(names[1])
428+
if err != nil {
429+
fd.NewName = names[1]
430+
}
414431
return true
415432
case lineCount == 3 && strings.HasPrefix(fd.Extended[2], "Binary files ") || lineCount > 3 && strings.HasPrefix(fd.Extended[2], "GIT binary patch"):
416433
names := strings.SplitN(fd.Extended[0][len("diff --git "):], " ", 2)

0 commit comments

Comments
 (0)