object

package
v0.1.39 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2026 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

Package object parses and serializes objects such as blob, tree, commit, and tag.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func TreeEntryNameCompare

func TreeEntryNameCompare(entryName []byte, entryMode FileMode, searchName []byte, searchIsTree bool) int

TreeEntryNameCompare compares names using Git tree ordering rules.

Types

type Blob

type Blob struct {
	Data []byte
}

Blob represents a Git blob object.

func ParseBlob

func ParseBlob(body []byte) (*Blob, error)

ParseBlob decodes a blob object body.

func (*Blob) ObjectType

func (blob *Blob) ObjectType() objecttype.Type

ObjectType returns TypeBlob.

func (*Blob) SerializeWithHeader

func (blob *Blob) SerializeWithHeader() ([]byte, error)

SerializeWithHeader renders the raw object (header + body).

func (*Blob) SerializeWithoutHeader

func (blob *Blob) SerializeWithoutHeader() ([]byte, error)

SerializeWithoutHeader renders the raw blob body bytes.

type Commit

type Commit struct {
	Tree         objectid.ObjectID
	Parents      []objectid.ObjectID
	Author       Signature
	Committer    Signature
	Message      []byte
	ChangeID     string
	ExtraHeaders []ExtraHeader
}

Commit represents a Git commit object.

func ParseCommit

func ParseCommit(body []byte, algo objectid.Algorithm) (*Commit, error)

ParseCommit decodes a commit object body.

func (*Commit) ObjectType

func (commit *Commit) ObjectType() objecttype.Type

ObjectType returns TypeCommit.

func (*Commit) SerializeWithHeader

func (commit *Commit) SerializeWithHeader() ([]byte, error)

SerializeWithHeader renders the raw object (header + body).

func (*Commit) SerializeWithoutHeader

func (commit *Commit) SerializeWithoutHeader() ([]byte, error)

SerializeWithoutHeader renders the raw commit body bytes.

type ExtraHeader

type ExtraHeader struct {
	Key   string
	Value []byte
}

ExtraHeader represents an extra header in a Git object.

type FileMode

type FileMode uint32

FileMode represents the mode of a file in a Git tree.

const (
	FileModeDir        FileMode = 0o40000
	FileModeRegular    FileMode = 0o100644
	FileModeExecutable FileMode = 0o100755
	FileModeSymlink    FileMode = 0o120000
	FileModeGitlink    FileMode = 0o160000
)

type Object

type Object interface {
	ObjectType() objecttype.Type
	SerializeWithoutHeader() ([]byte, error)
	SerializeWithHeader() ([]byte, error)
}

Object is a Git object that can serialize itself.

func ParseObjectWithHeader

func ParseObjectWithHeader(raw []byte, algo objectid.Algorithm) (Object, error)

ParseObjectWithHeader parses a loose object in "type size\\x00body" format.

func ParseObjectWithoutHeader

func ParseObjectWithoutHeader(ty objecttype.Type, body []byte, algo objectid.Algorithm) (Object, error)

ParseObjectWithoutHeader parses a typed object body.

type Signature added in v0.1.38

type Signature struct {
	Name          []byte
	Email         []byte
	WhenUnix      int64
	OffsetMinutes int32
}

Signature represents a Git signature (author/committer/tagger).

func ParseSignature added in v0.1.38

func ParseSignature(line []byte) (*Signature, error)

ParseSignature parses a canonical Git signature line: "Name <email> 123456789 +0000".

func (Signature) Serialize added in v0.1.38

func (signature Signature) Serialize() ([]byte, error)

Serialize renders the signature in canonical Git format.

func (Signature) When added in v0.1.38

func (signature Signature) When() time.Time

When returns a time.Time with the signature's timezone offset.

type Tag

type Tag struct {
	Target     objectid.ObjectID
	TargetType objecttype.Type
	Name       []byte
	Tagger     *Signature
	Message    []byte
}

Tag represents a Git annotated tag object.

func ParseTag

func ParseTag(body []byte, algo objectid.Algorithm) (*Tag, error)

ParseTag decodes a tag object body.

func (*Tag) ObjectType

func (tag *Tag) ObjectType() objecttype.Type

ObjectType returns TypeTag.

func (*Tag) SerializeWithHeader

func (tag *Tag) SerializeWithHeader() ([]byte, error)

SerializeWithHeader renders the raw object (header + body).

func (*Tag) SerializeWithoutHeader

func (tag *Tag) SerializeWithoutHeader() ([]byte, error)

SerializeWithoutHeader renders the raw tag body bytes.

type Tree

type Tree struct {
	Entries []TreeEntry
}

Tree represents a Git tree object.

func ParseTree

func ParseTree(body []byte, algo objectid.Algorithm) (*Tree, error)

ParseTree decodes a tree object body.

func (*Tree) Entry

func (tree *Tree) Entry(name []byte) *TreeEntry

Entry looks up a tree entry by name.

func (*Tree) InsertEntry

func (tree *Tree) InsertEntry(newEntry TreeEntry) error

InsertEntry inserts a tree entry while preserving Git ordering.

func (*Tree) ObjectType

func (tree *Tree) ObjectType() objecttype.Type

ObjectType returns TypeTree.

func (*Tree) RemoveEntry

func (tree *Tree) RemoveEntry(name []byte) error

RemoveEntry removes a tree entry by name.

func (*Tree) SerializeWithHeader

func (tree *Tree) SerializeWithHeader() ([]byte, error)

SerializeWithHeader renders the raw object (header + body).

func (*Tree) SerializeWithoutHeader

func (tree *Tree) SerializeWithoutHeader() ([]byte, error)

SerializeWithoutHeader renders the raw tree body bytes.

type TreeEntry

type TreeEntry struct {
	Mode FileMode
	Name []byte
	ID   objectid.ObjectID
}

TreeEntry represents a single entry in a tree.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL