diff options
author | James Fargher <jfargher@gitlab.com> | 2022-11-10 01:01:18 +0300 |
---|---|---|
committer | James Fargher <jfargher@gitlab.com> | 2022-11-10 01:01:18 +0300 |
commit | 533f1f85fd89438fb4575b38120d415717bcac1f (patch) | |
tree | f4b80c00edce4fd39c6b32b451a7697e31c68fea | |
parent | 03dcb986c2e4057563d34ed27a301f3dfd243f72 (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.go | 5 | ||||
-rw-r--r-- | internal/git/checksum_test.go | 2 | ||||
-rw-r--r-- | internal/gitaly/service/repository/calculate_checksum.go | 2 | ||||
-rw-r--r-- | internal/gitaly/service/repository/calculate_checksum_test.go | 4 |
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) } |