Skip to content

Commit 40d8ffd

Browse files
authored
Merge pull request #174 from vmarkovtsev/master
Fix chained renames
2 parents 17fb758 + ecc6a30 commit 40d8ffd

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

leaves/burndown.go

+23-4
Original file line numberDiff line numberDiff line change
@@ -1164,7 +1164,17 @@ func (analyser *BurndownAnalysis) handleDeletion(
11641164
file.Delete()
11651165
delete(analyser.files, name)
11661166
delete(analyser.fileHistories, name)
1167-
analyser.renames[name] = ""
1167+
stack := []string{name}
1168+
for len(stack) > 0 {
1169+
head := stack[len(stack)-1]
1170+
stack = stack[:len(stack)-1]
1171+
analyser.renames[head] = ""
1172+
for key, val := range analyser.renames {
1173+
if val == head {
1174+
stack = append(stack, key)
1175+
}
1176+
}
1177+
}
11681178
if analyser.day == burndown.TreeMergeMark {
11691179
analyser.mergedFiles[name] = false
11701180
}
@@ -1313,15 +1323,24 @@ func (analyser *BurndownAnalysis) handleRename(from, to string) error {
13131323
if analyser.TrackFiles {
13141324
history := analyser.fileHistories[from]
13151325
if history == nil {
1326+
var futureRename string
1327+
if _, exists := analyser.renames[""]; exists {
1328+
panic("burndown renames tracking corruption")
1329+
}
1330+
newRename, exists := analyser.renames[from]
1331+
for exists {
1332+
futureRename = newRename
1333+
newRename, exists = analyser.renames[futureRename]
1334+
}
13161335
// a future branch could have already renamed it and we are retarded
1317-
futureRename, exists := analyser.renames[from]
1318-
if futureRename == "" && exists {
1336+
if futureRename == "" {
13191337
// the file will be deleted in the future, whatever
13201338
history = sparseHistory{}
13211339
} else {
13221340
history = analyser.fileHistories[futureRename]
13231341
if history == nil {
1324-
return fmt.Errorf("file %s > %s does not exist (histories)", from, to)
1342+
return fmt.Errorf("file %s > %s (%s) does not exist (histories)",
1343+
from, to, futureRename)
13251344
}
13261345
}
13271346
}

0 commit comments

Comments
 (0)