mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Fix file rename/copy not supported by indexer (#9965)
Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
		
				
					committed by
					
						
						techknowlogick
					
				
			
			
				
	
			
			
			
						parent
						
							700611cc18
						
					
				
				
					commit
					ee26f042c4
				
			@@ -116,7 +116,12 @@ func nonGenesisChanges(repo *models.Repository, revision string) (*repoChanges,
 | 
			
		||||
		if len(line) == 0 {
 | 
			
		||||
			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 {
 | 
			
		||||
			continue
 | 
			
		||||
		} else if filename[0] == '"' {
 | 
			
		||||
@@ -126,11 +131,31 @@ func nonGenesisChanges(repo *models.Repository, revision string) (*repoChanges,
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch status := line[0]; status {
 | 
			
		||||
		switch status := fields[0][0]; status {
 | 
			
		||||
		case 'M', 'A':
 | 
			
		||||
			updatedFilenames = append(updatedFilenames, filename)
 | 
			
		||||
		case 'D':
 | 
			
		||||
			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:
 | 
			
		||||
			log.Warn("Unrecognized status: %c (line=%s)", status, line)
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user