shithub: furgit

ref: e67fbfc75de011c2c7685ae7a10dfce702b2a620
dir: /ref/ref.go/

View raw version
// Package ref provides general, detached, and symbolic references.
package ref

import "codeberg.org/lindenii/furgit/objectid"

// Ref is a Git reference.
//
// Implementations must be in this package.
type Ref interface {
	isRef()
	Name() string
}

// Detached points directly to an object ID.
type Detached struct {
	RefName string
	ID      objectid.ObjectID

	// Peeled is the peeled target when available (for annotated tags).
	//
	// This field is optional backend-provided metadata. Backends that do not
	// have peel metadata available may leave it nil.
	Peeled *objectid.ObjectID
}

// Name returns the fully-qualified reference name.
func (ref Detached) Name() string {
	return ref.RefName
}

func (Detached) isRef() {}

// Symbolic points to another reference name.
type Symbolic struct {
	RefName string
	Target  string
}

// Name returns the fully-qualified reference name.
func (ref Symbolic) Name() string {
	return ref.RefName
}

func (Symbolic) isRef() {}