forked from NYANDEV/forgejo
Remove seen
map from getLastCommitForPaths
(#6807)
Ensures correctly traversing the commit graph for all path and avoids erroneously skipping some. Also preallocate some arrays to correct size to prevent unnecessary reallocations. Fixes #6708. Signed-off-by: Filip Navara <filip.navara@gmail.com>
This commit is contained in:
parent
9b9ec7847c
commit
55daee8d22
1 changed files with 2 additions and 8 deletions
|
@ -124,7 +124,6 @@ func getFileHashes(c *object.Commit, treePath string, paths []string) (map[strin
|
|||
|
||||
func getLastCommitForPaths(c *object.Commit, treePath string, paths []string) (map[string]*object.Commit, error) {
|
||||
// We do a tree traversal with nodes sorted by commit time
|
||||
seen := make(map[plumbing.Hash]bool)
|
||||
heap := binaryheap.NewWith(func(a, b interface{}) int {
|
||||
if a.(*commitAndPaths).commit.Committer.When.Before(b.(*commitAndPaths).commit.Committer.When) {
|
||||
return 1
|
||||
|
@ -202,15 +201,10 @@ func getLastCommitForPaths(c *object.Commit, treePath string, paths []string) (m
|
|||
// Add the parent nodes along with remaining paths to the heap for further
|
||||
// processing.
|
||||
for j, parent := range parents {
|
||||
if seen[parent.ID()] {
|
||||
continue
|
||||
}
|
||||
seen[parent.ID()] = true
|
||||
|
||||
// Combine remainingPath with paths available on the parent branch
|
||||
// and make union of them
|
||||
var remainingPathsForParent []string
|
||||
var newRemainingPaths []string
|
||||
remainingPathsForParent := make([]string, 0, len(remainingPaths))
|
||||
newRemainingPaths := make([]string, 0, len(remainingPaths))
|
||||
for _, path := range remainingPaths {
|
||||
if parentHashes[j][path] == current.hashes[path] {
|
||||
remainingPathsForParent = append(remainingPathsForParent, path)
|
||||
|
|
Loading…
Reference in a new issue