main
 1package git
 2
 3import (
 4	"time"
 5)
 6
 7type Ref struct {
 8	ref     string
 9	dirName string
10}
11
12func NewRef(ref string) Ref {
13	return Ref{
14		ref:     ref,
15		dirName: RefToFileName(ref),
16	}
17}
18
19func (r Ref) IsEmpty() bool {
20	return r.ref == ""
21}
22
23func (r Ref) String() string {
24	return r.ref
25}
26
27func (r Ref) DirName() string {
28	return r.dirName
29}
30
31type Blob struct {
32	Ref      Ref
33	Mode     string
34	Path     string
35	FileName string
36	Size     int64
37}
38
39type Commit struct {
40	Hash           string
41	ShortHash      string
42	Subject        string
43	Body           string
44	Author         string
45	Email          string
46	Date           time.Time
47	CommitterName  string
48	CommitterEmail string
49	CommitterDate  time.Time
50	Parents        []string
51	Branch         Ref
52	RefNames       []RefName
53	Href           string
54}
55
56type RefKind string
57
58const (
59	RefKindHEAD       RefKind = "HEAD"
60	RefKindRemoteHEAD RefKind = "RemoteHEAD"
61	RefKindBranch     RefKind = "Branch"
62	RefKindRemote     RefKind = "Remote"
63	RefKindTag        RefKind = "Tag"
64)
65
66type RefName struct {
67	Kind   RefKind
68	Name   string // Name is the primary name of the ref as shown by `git log %D` token (left side for pointers)
69	Target string // Target is set for symbolic refs like "HEAD -> main" or "origin/HEAD -> origin/main"
70}
71
72type Tag struct {
73	Name       string
74	Date       time.Time
75	CommitHash string
76}