Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Fargher <jfargher@gitlab.com>2022-11-10 01:01:18 +0300
committerJames Fargher <jfargher@gitlab.com>2022-11-10 01:01:18 +0300
commit533f1f85fd89438fb4575b38120d415717bcac1f (patch)
treef4b80c00edce4fd39c6b32b451a7697e31c68fea
parent03dcb986c2e4057563d34ed27a301f3dfd243f72 (diff)
git: Extract a zero checksum constant
Previously when a constant zero checksum was required, it was retrieved from object hash. The checksum hash is completely decoupled from the object hash and so here we separate these concepts.
-rw-r--r--internal/git/checksum.go5
-rw-r--r--internal/git/checksum_test.go2
-rw-r--r--internal/gitaly/service/repository/calculate_checksum.go2
-rw-r--r--internal/gitaly/service/repository/calculate_checksum_test.go4
4 files changed, 8 insertions, 5 deletions
diff --git a/internal/git/checksum.go b/internal/git/checksum.go
index ce4fb25d0..89f0e8404 100644
--- a/internal/git/checksum.go
+++ b/internal/git/checksum.go
@@ -8,6 +8,9 @@ import (
"regexp"
)
+// ZeroChecksum is the hex representation of a checksum with no references added.
+const ZeroChecksum = "0000000000000000000000000000000000000000"
+
var refsAllowed = regexp.MustCompile(`HEAD|(refs/(heads|tags|keep-around|merge-requests|environments|notes)/)`)
// Checksum is a hash representation of all references in a repository.
@@ -65,7 +68,7 @@ func (c *Checksum) Bytes() []byte {
// String returns the checksum as a hex encoded string.
func (c *Checksum) String() string {
if c.IsZero() {
- return ObjectHashSHA1.ZeroOID.String()
+ return ZeroChecksum
}
return hex.EncodeToString(c.Bytes())
}
diff --git a/internal/git/checksum_test.go b/internal/git/checksum_test.go
index b70650d3d..dc1f8e8b6 100644
--- a/internal/git/checksum_test.go
+++ b/internal/git/checksum_test.go
@@ -53,7 +53,7 @@ func TestChecksum(t *testing.T) {
{
desc: "zero",
expectedZero: true,
- expected: ObjectHashSHA1.ZeroOID.String(),
+ expected: ZeroChecksum,
},
{
desc: "single ref",
diff --git a/internal/gitaly/service/repository/calculate_checksum.go b/internal/gitaly/service/repository/calculate_checksum.go
index 6bff6e61d..78d99ccef 100644
--- a/internal/gitaly/service/repository/calculate_checksum.go
+++ b/internal/gitaly/service/repository/calculate_checksum.go
@@ -48,7 +48,7 @@ func (s *server) CalculateChecksum(ctx context.Context, in *gitalypb.CalculateCh
if err := cmd.Wait(); checksum.IsZero() || err != nil {
if s.isValidRepo(ctx, repo) {
- return &gitalypb.CalculateChecksumResponse{Checksum: git.ObjectHashSHA1.ZeroOID.String()}, nil
+ return &gitalypb.CalculateChecksumResponse{Checksum: git.ZeroChecksum}, nil
}
return nil, status.Errorf(codes.DataLoss, "CalculateChecksum: not a git repository '%s'", repoPath)
diff --git a/internal/gitaly/service/repository/calculate_checksum_test.go b/internal/gitaly/service/repository/calculate_checksum_test.go
index 7924ead17..4ff6b5ec0 100644
--- a/internal/gitaly/service/repository/calculate_checksum_test.go
+++ b/internal/gitaly/service/repository/calculate_checksum_test.go
@@ -51,7 +51,7 @@ func TestEmptyRepositoryCalculateChecksum(t *testing.T) {
response, err := client.CalculateChecksum(ctx, request)
require.NoError(t, err)
- require.Equal(t, git.ObjectHashSHA1.ZeroOID.String(), response.Checksum)
+ require.Equal(t, git.ZeroChecksum, response.Checksum)
}
func TestBrokenRepositoryCalculateChecksum(t *testing.T) {
@@ -125,5 +125,5 @@ func TestInvalidRefsCalculateChecksum(t *testing.T) {
response, err := client.CalculateChecksum(ctx, request)
require.NoError(t, err)
- require.Equal(t, git.ObjectHashSHA1.ZeroOID.String(), response.Checksum)
+ require.Equal(t, git.ZeroChecksum, response.Checksum)
}