aboutsummaryrefslogtreecommitdiff
path: root/object/type
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-25 14:21:09 +0000
committerGravatar Runxi Yu2026-03-25 14:21:09 +0000
commit7d9c128ce04875f970c78673500c0a492000398f (patch)
tree4e65166a451f9970c5264fad72e9a8f9634eefb5 /object/type
parentresearch: Dynamic packfile log (diff)
signatureNo signature
*: objecttype, objectheader -> object/type, object/header
Diffstat (limited to 'object/type')
-rw-r--r--object/type/name.go42
-rw-r--r--object/type/objecttype.go16
2 files changed, 58 insertions, 0 deletions
diff --git a/object/type/name.go b/object/type/name.go
new file mode 100644
index 00000000..870ac1e4
--- /dev/null
+++ b/object/type/name.go
@@ -0,0 +1,42 @@
+package objecttype
+
+const (
+ typeNameBlob = "blob"
+ typeNameTree = "tree"
+ typeNameCommit = "commit"
+ typeNameTag = "tag"
+)
+
+// ParseName parses a canonical Git object type name.
+func ParseName(name string) (Type, bool) {
+ switch name {
+ case typeNameBlob:
+ return TypeBlob, true
+ case typeNameTree:
+ return TypeTree, true
+ case typeNameCommit:
+ return TypeCommit, true
+ case typeNameTag:
+ return TypeTag, true
+ default:
+ return TypeInvalid, false
+ }
+}
+
+// Name returns the canonical Git object type name.
+func Name(ty Type) (string, bool) {
+ switch ty {
+ case TypeBlob:
+ return typeNameBlob, true
+ case TypeTree:
+ return typeNameTree, true
+ case TypeCommit:
+ return typeNameCommit, true
+ case TypeTag:
+ return typeNameTag, true
+ case TypeInvalid, TypeFuture, TypeOfsDelta, TypeRefDelta:
+ return "", false
+ default:
+ return "", false
+ }
+}
diff --git a/object/type/objecttype.go b/object/type/objecttype.go
new file mode 100644
index 00000000..2e12dadc
--- /dev/null
+++ b/object/type/objecttype.go
@@ -0,0 +1,16 @@
+// Package objecttype provides object type constants and names.
+package objecttype
+
+// Type mirrors Git object type tags in packfiles.
+type Type uint8
+
+const (
+ TypeInvalid Type = 0
+ TypeCommit Type = 1
+ TypeTree Type = 2
+ TypeBlob Type = 3
+ TypeTag Type = 4
+ TypeFuture Type = 5
+ TypeOfsDelta Type = 6
+ TypeRefDelta Type = 7
+)