···11+package objecttype
22+33+// IsBaseObject reports whether ty is one of the four canonical Git object
44+// types encoded directly in pack entries.
55+func (ty Type) IsBaseObject() bool {
66+ return ty.details().isBaseObject
77+}
+4-35
object/type/name.go
···11package objecttype
2233-const (
44- typeNameBlob = "blob"
55- typeNameTree = "tree"
66- typeNameCommit = "commit"
77- typeNameTag = "tag"
88-)
99-1010-// Parse parses a canonical Git object type name.
1111-func Parse(name string) (Type, bool) {
1212- switch name {
1313- case typeNameBlob:
1414- return TypeBlob, true
1515- case typeNameTree:
1616- return TypeTree, true
1717- case typeNameCommit:
1818- return TypeCommit, true
1919- case typeNameTag:
2020- return TypeTag, true
2121- default:
2222- return TypeInvalid, false
2323- }
2424-}
2525-263// Name returns the canonical Git object type name.
274func (ty Type) Name() (string, bool) {
2828- switch ty {
2929- case TypeBlob:
3030- return typeNameBlob, true
3131- case TypeTree:
3232- return typeNameTree, true
3333- case TypeCommit:
3434- return typeNameCommit, true
3535- case TypeTag:
3636- return typeNameTag, true
3737- case TypeInvalid, TypeFuture, TypeOfsDelta, TypeRefDelta:
3838- return "", false
3939- default:
55+ details := ty.details()
66+ if details.name == "" {
407 return "", false
418 }
99+1010+ return details.name, true
4211}
-29
object/type/objecttype.go
···11-// Package objecttype provides Git object type tags and names.
22-package objecttype
33-44-// Type mirrors Git object type tags in packfiles.
55-type Type uint8
66-77-const (
88- TypeInvalid Type = 0
99- TypeCommit Type = 1
1010- TypeTree Type = 2
1111- TypeBlob Type = 3
1212- TypeTag Type = 4
1313- TypeFuture Type = 5
1414- TypeOfsDelta Type = 6
1515- TypeRefDelta Type = 7
1616-)
1717-1818-// IsBaseObject reports whether ty is one of the four canonical Git object
1919-// types encoded directly in pack entries.
2020-func (ty Type) IsBaseObject() bool {
2121- switch ty {
2222- case TypeCommit, TypeTree, TypeBlob, TypeTag:
2323- return true
2424- case TypeInvalid, TypeFuture, TypeOfsDelta, TypeRefDelta:
2525- return false
2626- default:
2727- return false
2828- }
2929-}
+8
object/type/parse.go
···11+package objecttype
22+33+// Parse parses a canonical Git object type name.
44+func Parse(name string) (Type, bool) {
55+ ty, ok := typeByName[name]
66+77+ return ty, ok
88+}
···11+// Package objecttype provides Git object type tags and names.
22+package objecttype
33+44+// Type mirrors Git object type tags in packfiles.
55+type Type uint8
66+77+const (
88+ TypeInvalid Type = 0
99+ TypeCommit Type = 1
1010+ TypeTree Type = 2
1111+ TypeBlob Type = 3
1212+ TypeTag Type = 4
1313+ TypeFuture Type = 5
1414+ TypeOfsDelta Type = 6
1515+ TypeRefDelta Type = 7
1616+)