Browse Source

Optimize getCommitParents

Signed-off-by: Vadim Markovtsev <vadim@sourced.tech>
Vadim Markovtsev 6 years ago
parent
commit
fa97e373df
1 changed files with 7 additions and 2 deletions
  1. 7 2
      internal/core/forks.go

+ 7 - 2
internal/core/forks.go

@@ -192,10 +192,15 @@ func printAction(p runAction) {
 // Yes, it *is* possible to have several identical parents, and Hercules used to crash because of that.
 func getCommitParents(commit *object.Commit) []plumbing.Hash {
 	result := make([]plumbing.Hash, 0, len(commit.ParentHashes))
-	parents := map[plumbing.Hash]bool{}
+	var parents map[plumbing.Hash]bool
+	if len(commit.ParentHashes) > 1 {
+		parents = map[plumbing.Hash]bool{}
+	}
 	for _, parent := range commit.ParentHashes {
 		if _, exists := parents[parent]; !exists {
-			parents[parent] = true
+			if parents != nil {
+				parents[parent] = true
+			}
 			result = append(result, parent)
 		}
 	}