aboutsummaryrefslogtreecommitdiff
path: root/diff/trees
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-25 14:49:17 +0000
committerGravatar Runxi Yu2026-03-25 15:02:22 +0000
commit7847657e0820af98120031f719b8ede635ad8c07 (patch)
tree8c4439c78f72f1382edc809b49be33115847b6e7 /diff/trees
parentobject: Remove type.go (diff)
signatureNo signature
object: Split each object type into its own package v0.1.108
Diffstat (limited to 'diff/trees')
-rw-r--r--diff/trees/diff.go4
-rw-r--r--diff/trees/diff_recursive.go22
-rw-r--r--diff/trees/diff_test.go10
-rw-r--r--diff/trees/entry.go6
4 files changed, 21 insertions, 21 deletions
diff --git a/diff/trees/diff.go b/diff/trees/diff.go
index 742d7397..0f3cf1f2 100644
--- a/diff/trees/diff.go
+++ b/diff/trees/diff.go
@@ -2,15 +2,15 @@
package trees
import (
- "codeberg.org/lindenii/furgit/object"
objectid "codeberg.org/lindenii/furgit/object/id"
+ "codeberg.org/lindenii/furgit/object/tree"
)
// Diff compares two trees and returns recursive differences.
//
// readTree is used to lazily load child trees by object ID when recursion
// reaches directory entries.
-func Diff(a, b *object.Tree, readTree func(objectid.ObjectID) (*object.Tree, error)) ([]Entry, error) {
+func Diff(a, b *tree.Tree, readTree func(objectid.ObjectID) (*tree.Tree, error)) ([]Entry, error) {
var out []Entry
err := diffRecursive(a, b, nil, readTree, &out)
diff --git a/diff/trees/diff_recursive.go b/diff/trees/diff_recursive.go
index 8ad4caf1..98848b24 100644
--- a/diff/trees/diff_recursive.go
+++ b/diff/trees/diff_recursive.go
@@ -1,11 +1,11 @@
package trees
import (
- "codeberg.org/lindenii/furgit/object"
objectid "codeberg.org/lindenii/furgit/object/id"
+ "codeberg.org/lindenii/furgit/object/tree"
)
-func diffRecursive(a, b *object.Tree, prefix []byte, readTree func(objectid.ObjectID) (*object.Tree, error), out *[]Entry) error {
+func diffRecursive(a, b *tree.Tree, prefix []byte, readTree func(objectid.ObjectID) (*tree.Tree, error), out *[]Entry) error {
if a == nil && b == nil {
return nil
}
@@ -16,7 +16,7 @@ func diffRecursive(a, b *object.Tree, prefix []byte, readTree func(objectid.Obje
full := joinPath(prefix, entry.Name)
*out = append(*out, Entry{Path: full, Kind: EntryKindAdded, Old: nil, New: entry})
- if entry.Mode != object.FileModeDir {
+ if entry.Mode != tree.FileModeDir {
continue
}
@@ -40,7 +40,7 @@ func diffRecursive(a, b *object.Tree, prefix []byte, readTree func(objectid.Obje
full := joinPath(prefix, entry.Name)
*out = append(*out, Entry{Path: full, Kind: EntryKindDeleted, Old: entry, New: nil})
- if entry.Mode != object.FileModeDir {
+ if entry.Mode != tree.FileModeDir {
continue
}
@@ -65,18 +65,18 @@ func diffRecursive(a, b *object.Tree, prefix []byte, readTree func(objectid.Obje
left := &a.Entries[i]
right := &b.Entries[j]
- cmp := object.TreeEntryNameCompare(
+ cmp := tree.TreeEntryNameCompare(
left.Name,
left.Mode,
right.Name,
- right.Mode == object.FileModeDir,
+ right.Mode == tree.FileModeDir,
)
switch {
case cmp < 0:
full := joinPath(prefix, left.Name)
*out = append(*out, Entry{Path: full, Kind: EntryKindDeleted, Old: left, New: nil})
- if left.Mode == object.FileModeDir {
+ if left.Mode == tree.FileModeDir {
sub, err := readTree(left.ID)
if err != nil {
return err
@@ -93,7 +93,7 @@ func diffRecursive(a, b *object.Tree, prefix []byte, readTree func(objectid.Obje
full := joinPath(prefix, right.Name)
*out = append(*out, Entry{Path: full, Kind: EntryKindAdded, Old: nil, New: right})
- if right.Mode == object.FileModeDir {
+ if right.Mode == tree.FileModeDir {
sub, err := readTree(right.ID)
if err != nil {
return err
@@ -114,7 +114,7 @@ func diffRecursive(a, b *object.Tree, prefix []byte, readTree func(objectid.Obje
*out = append(*out, Entry{Path: full, Kind: EntryKindModified, Old: left, New: right})
}
- if left.Mode == object.FileModeDir && right.Mode == object.FileModeDir && left.ID != right.ID {
+ if left.Mode == tree.FileModeDir && right.Mode == tree.FileModeDir && left.ID != right.ID {
leftSub, err := readTree(left.ID)
if err != nil {
return err
@@ -141,7 +141,7 @@ func diffRecursive(a, b *object.Tree, prefix []byte, readTree func(objectid.Obje
full := joinPath(prefix, left.Name)
*out = append(*out, Entry{Path: full, Kind: EntryKindDeleted, Old: left, New: nil})
- if left.Mode == object.FileModeDir {
+ if left.Mode == tree.FileModeDir {
sub, err := readTree(left.ID)
if err != nil {
return err
@@ -159,7 +159,7 @@ func diffRecursive(a, b *object.Tree, prefix []byte, readTree func(objectid.Obje
full := joinPath(prefix, right.Name)
*out = append(*out, Entry{Path: full, Kind: EntryKindAdded, Old: nil, New: right})
- if right.Mode == object.FileModeDir {
+ if right.Mode == tree.FileModeDir {
sub, err := readTree(right.ID)
if err != nil {
return err
diff --git a/diff/trees/diff_test.go b/diff/trees/diff_test.go
index 9924c2ad..8e8fed1c 100644
--- a/diff/trees/diff_test.go
+++ b/diff/trees/diff_test.go
@@ -6,9 +6,9 @@ import (
"codeberg.org/lindenii/furgit/diff/trees"
"codeberg.org/lindenii/furgit/internal/testgit"
- "codeberg.org/lindenii/furgit/object"
objectid "codeberg.org/lindenii/furgit/object/id"
"codeberg.org/lindenii/furgit/object/storer/loose"
+ "codeberg.org/lindenii/furgit/object/tree"
objecttype "codeberg.org/lindenii/furgit/object/type"
)
@@ -174,10 +174,10 @@ func openLooseStore(t *testing.T, repo *testgit.TestRepo, algo objectid.Algorith
return store
}
-func makeReadTree(t *testing.T, store *loose.Store, algo objectid.Algorithm) func(objectid.ObjectID) (*object.Tree, error) {
+func makeReadTree(t *testing.T, store *loose.Store, algo objectid.Algorithm) func(objectid.ObjectID) (*tree.Tree, error) {
t.Helper()
- return func(id objectid.ObjectID) (*object.Tree, error) {
+ return func(id objectid.ObjectID) (*tree.Tree, error) {
ty, content, err := store.ReadBytesContent(id)
if err != nil {
return nil, err
@@ -187,11 +187,11 @@ func makeReadTree(t *testing.T, store *loose.Store, algo objectid.Algorithm) fun
return nil, errors.New("diff/trees test: object is not a tree")
}
- return object.ParseTree(content, algo)
+ return tree.Parse(content, algo)
}
}
-func mustReadTree(t *testing.T, readTree func(objectid.ObjectID) (*object.Tree, error), id objectid.ObjectID) *object.Tree {
+func mustReadTree(t *testing.T, readTree func(objectid.ObjectID) (*tree.Tree, error), id objectid.ObjectID) *tree.Tree {
t.Helper()
tree, err := readTree(id)
diff --git a/diff/trees/entry.go b/diff/trees/entry.go
index 267c3380..84813a79 100644
--- a/diff/trees/entry.go
+++ b/diff/trees/entry.go
@@ -1,6 +1,6 @@
package trees
-import "codeberg.org/lindenii/furgit/object"
+import "codeberg.org/lindenii/furgit/object/tree"
// Entry is one recursive tree difference at a path.
type Entry struct {
@@ -9,7 +9,7 @@ type Entry struct {
// Kind is the difference kind for this path.
Kind EntryKind
// Old is the old tree entry (nil when Kind is EntryKindAdded).
- Old *object.TreeEntry
+ Old *tree.TreeEntry
// New is the new tree entry (nil when Kind is EntryKindDeleted).
- New *object.TreeEntry
+ New *tree.TreeEntry
}