Browse Source

Fix file rename/copy not supported by indexer (#9965)

Co-authored-by: zeripath <art27@cantab.net>
tags/v1.10.5
guillep2k 4 years ago
parent
commit
ee26f042c4
1 changed files with 27 additions and 2 deletions
  1. 27
    2
      modules/indexer/code/git.go

+ 27
- 2
modules/indexer/code/git.go View File

if len(line) == 0 { if len(line) == 0 {
continue continue
} }
filename := strings.TrimSpace(line[1:])
fields := strings.Split(line, "\t")
if len(fields) < 2 {
log.Warn("Unparseable output for diff --name-status: `%s`)", line)
continue
}
filename := fields[1]
if len(filename) == 0 { if len(filename) == 0 {
continue continue
} else if filename[0] == '"' { } else if filename[0] == '"' {
} }
} }


switch status := line[0]; status {
switch status := fields[0][0]; status {
case 'M', 'A': case 'M', 'A':
updatedFilenames = append(updatedFilenames, filename) updatedFilenames = append(updatedFilenames, filename)
case 'D': case 'D':
changes.RemovedFilenames = append(changes.RemovedFilenames, filename) changes.RemovedFilenames = append(changes.RemovedFilenames, filename)
case 'R', 'C':
if len(fields) < 3 {
log.Warn("Unparseable output for diff --name-status: `%s`)", line)
continue
}
dest := fields[2]
if len(dest) == 0 {
log.Warn("Unparseable output for diff --name-status: `%s`)", line)
continue
}
if dest[0] == '"' {
dest, err = strconv.Unquote(dest)
if err != nil {
return nil, err
}
}
if status == 'R' {
changes.RemovedFilenames = append(changes.RemovedFilenames, filename)
}
updatedFilenames = append(updatedFilenames, dest)
default: default:
log.Warn("Unrecognized status: %c (line=%s)", status, line) log.Warn("Unrecognized status: %c (line=%s)", status, line)
} }

Loading…
Cancel
Save