aboutsummaryrefslogtreecommitdiff
path: root/repository/traversal_helpers_test.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-06 01:48:44 +0800
committerGravatar Runxi Yu2026-03-06 01:48:44 +0800
commit120509f0aad0e945d8e0fc90a822fa904fb70b68 (patch)
tree20a541f059591b35795a1a5d3b7dcf48ec711b6a /repository/traversal_helpers_test.go
parentrefstore/loose: Fix package-level comment (diff)
signatureNo signature
repository: Refactor v0.1.55
Diffstat (limited to 'repository/traversal_helpers_test.go')
-rw-r--r--repository/traversal_helpers_test.go102
1 files changed, 0 insertions, 102 deletions
diff --git a/repository/traversal_helpers_test.go b/repository/traversal_helpers_test.go
deleted file mode 100644
index 143d3b62..00000000
--- a/repository/traversal_helpers_test.go
+++ /dev/null
@@ -1,102 +0,0 @@
-package repository_test
-
-import (
- "codeberg.org/lindenii/furgit/object"
- "codeberg.org/lindenii/furgit/objectid"
- "codeberg.org/lindenii/furgit/repository"
-)
-
-type treeWalkFrame struct {
- id objectid.ObjectID
- isTree bool
-}
-
-func traverseTreeIter(repo *repository.Repository, root objectid.ObjectID) (int, error) {
- stack := []treeWalkFrame{{id: root, isTree: true}}
- total := 0
-
- for len(stack) > 0 {
- frame := stack[len(stack)-1]
- stack = stack[:len(stack)-1]
- id := frame.id
-
- if !frame.isTree {
- _, err := repo.Objects().ReadSize(id)
- if err != nil {
- return 0, err
- }
-
- total++
-
- continue
- }
-
- tree, err := repo.ReadStoredTree(id)
- if err != nil {
- return 0, err
- }
-
- total++
-
- for i := len(tree.Tree().Entries) - 1; i >= 0; i-- {
- entry := tree.Tree().Entries[i]
- if entry.Mode == object.FileModeGitlink {
- continue
- }
-
- stack = append(stack, treeWalkFrame{
- id: entry.ID,
- isTree: entry.Mode == object.FileModeDir,
- })
- }
- }
-
- return total, nil
-}
-
-func traverseReachableIter(repo *repository.Repository, root objectid.ObjectID) (int, error) {
- stack := []objectid.ObjectID{root}
- visited := make(map[objectid.ObjectID]struct{})
- total := 0
-
- for len(stack) > 0 {
- id := stack[len(stack)-1]
- stack = stack[:len(stack)-1]
-
- _, ok := visited[id]
- if ok {
- continue
- }
-
- visited[id] = struct{}{}
-
- stored, err := repo.ReadStored(id)
- if err != nil {
- return 0, err
- }
-
- total++
-
- switch obj := stored.Object().(type) {
- case *object.Commit:
- stack = append(stack, obj.Tree)
- stack = append(stack, obj.Parents...)
- case *object.Tree:
- for i := len(obj.Entries) - 1; i >= 0; i-- {
- entry := obj.Entries[i]
- if entry.Mode == object.FileModeGitlink {
- continue
- }
-
- stack = append(stack, entry.ID)
- }
- case *object.Tag:
- stack = append(stack, obj.Target)
- case *object.Blob:
- default:
- // Unknown parsed object variants are treated as leaves.
- }
- }
-
- return total, nil
-}