aboutsummaryrefslogtreecommitdiffstats
path: root/modules/git/object_format.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/git/object_format.go')
-rw-r--r--modules/git/object_format.go37
1 files changed, 17 insertions, 20 deletions
diff --git a/modules/git/object_format.go b/modules/git/object_format.go
index ee7e659ed0..27771e7459 100644
--- a/modules/git/object_format.go
+++ b/modules/git/object_format.go
@@ -6,6 +6,7 @@ package git
import (
"crypto/sha1"
"regexp"
+ "strconv"
)
// sha1Pattern can be used to determine if a string is an valid sha
@@ -20,14 +21,12 @@ type ObjectFormat interface {
EmptyTree() ObjectID
// FullLength is the length of the hash's hex string
FullLength() int
-
+ // IsValid returns true if the input is a valid hash
IsValid(input string) bool
+ // MustID creates a new ObjectID from a byte slice
MustID(b []byte) ObjectID
- MustIDFromString(s string) ObjectID
- NewID(b []byte) (ObjectID, error)
- NewIDFromString(s string) (ObjectID, error)
-
- NewHasher() HasherInterface
+ // ComputeHash compute the hash for a given ObjectType and content
+ ComputeHash(t ObjectType, content []byte) ObjectID
}
type Sha1ObjectFormatImpl struct{}
@@ -59,20 +58,18 @@ func (Sha1ObjectFormatImpl) MustID(b []byte) ObjectID {
return &id
}
-func (h Sha1ObjectFormatImpl) MustIDFromString(s string) ObjectID {
- return MustIDFromString(h, s)
-}
-
-func (h Sha1ObjectFormatImpl) NewID(b []byte) (ObjectID, error) {
- return IDFromRaw(h, b)
-}
-
-func (h Sha1ObjectFormatImpl) NewIDFromString(s string) (ObjectID, error) {
- return genericIDFromString(h, s)
-}
-
-func (h Sha1ObjectFormatImpl) NewHasher() HasherInterface {
- return &Sha1Hasher{sha1.New()}
+// ComputeHash compute the hash for a given ObjectType and content
+func (h Sha1ObjectFormatImpl) ComputeHash(t ObjectType, content []byte) ObjectID {
+ hasher := sha1.New()
+ _, _ = hasher.Write(t.Bytes())
+ _, _ = hasher.Write([]byte(" "))
+ _, _ = hasher.Write([]byte(strconv.FormatInt(int64(len(content)), 10)))
+ _, _ = hasher.Write([]byte{0})
+
+ // HashSum generates a SHA1 for the provided hash
+ var sha1 Sha1Hash
+ copy(sha1[:], hasher.Sum(nil))
+ return &sha1
}
var Sha1ObjectFormat ObjectFormat = Sha1ObjectFormatImpl{}