aboutsummaryrefslogtreecommitdiff
path: root/reachability
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-06 21:19:38 +0800
committerGravatar Runxi Yu2026-03-06 21:19:38 +0800
commit04e1b6bf4a47bfd99af703e6421e039a969fc6de (patch)
treecf073be8e83fa11feff5e11c145afc42867d0712 /reachability
parentREADME: Add more future things (diff)
signatureNo signature
reachability: Peel root to commit
Diffstat (limited to 'reachability')
-rw-r--r--reachability/ancestor.go4
-rw-r--r--reachability/peel.go10
2 files changed, 5 insertions, 9 deletions
diff --git a/reachability/ancestor.go b/reachability/ancestor.go
index 211aed01..584ec0e3 100644
--- a/reachability/ancestor.go
+++ b/reachability/ancestor.go
@@ -12,12 +12,12 @@ import (
//
// Both inputs are peeled through annotated tags before commit traversal.
func (r *Reachability) IsAncestor(ancestor, descendant objectid.ObjectID) (bool, error) {
- ancestorCommit, err := r.peelRootToDomain(ancestor, DomainCommits)
+ ancestorCommit, err := r.peelRootToCommit(ancestor)
if err != nil {
return false, err
}
- descendantCommit, err := r.peelRootToDomain(descendant, DomainCommits)
+ descendantCommit, err := r.peelRootToCommit(descendant)
if err != nil {
return false, err
}
diff --git a/reachability/peel.go b/reachability/peel.go
index e8120ef7..5f24982e 100644
--- a/reachability/peel.go
+++ b/reachability/peel.go
@@ -6,12 +6,8 @@ import (
"codeberg.org/lindenii/furgit/objecttype"
)
-func (r *Reachability) peelRootToDomain(id objectid.ObjectID, domain Domain) (objectid.ObjectID, error) {
- err := validateDomain(domain)
- if err != nil {
- return objectid.ObjectID{}, err
- }
-
+// peelRootToCommit peels annotated tags transitively until a commit is reached.
+func (r *Reachability) peelRootToCommit(id objectid.ObjectID) (objectid.ObjectID, error) {
for {
ty, err := r.readHeaderType(id)
if err != nil {
@@ -19,7 +15,7 @@ func (r *Reachability) peelRootToDomain(id objectid.ObjectID, domain Domain) (ob
}
if ty != objecttype.TypeTag {
- if domain == DomainCommits && ty != objecttype.TypeCommit {
+ if ty != objecttype.TypeCommit {
return objectid.ObjectID{}, &ObjectTypeError{OID: id, Got: ty, Want: objecttype.TypeCommit}
}