diff options
Diffstat (limited to 'reachability/peel.go')
| -rw-r--r-- | reachability/peel.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/reachability/peel.go b/reachability/peel.go index 9df9bb4d..7b9e7bf1 100644 --- a/reachability/peel.go +++ b/reachability/peel.go @@ -7,18 +7,22 @@ import ( ) func (r *Reachability) peelRootToDomain(id objectid.ObjectID, domain Domain) (objectid.ObjectID, error) { - if err := validateDomain(domain); err != nil { + err := validateDomain(domain) + if err != nil { return objectid.ObjectID{}, err } + for { ty, err := r.readHeaderType(id) if err != nil { return objectid.ObjectID{}, err } + if ty != objecttype.TypeTag { if domain == DomainCommits && ty != objecttype.TypeCommit { return objectid.ObjectID{}, &ErrObjectType{OID: id, Got: ty, Want: objecttype.TypeCommit} } + return id, nil } @@ -26,10 +30,12 @@ func (r *Reachability) peelRootToDomain(id objectid.ObjectID, domain Domain) (ob if err != nil { return objectid.ObjectID{}, err } + tag, err := object.ParseTag(content, id.Algorithm()) if err != nil { return objectid.ObjectID{}, err } + id = tag.Target } } |
