From 850360eeeab09b8e36fe70d191b768523fddb6f2 Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt <psteinhardt@gitlab.com> Date: Mon, 7 Aug 2023 11:02:17 +0200 Subject: [PATCH] operations: Support SHA256 in UserDeleteBranch Support the SHA256 object format in the UserDeleteBranch RPC. Changelog: added --- .../service/operations/user_delete_branch.go | 15 ++++++++++----- .../service/operations/user_delete_branch_test.go | 2 -- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/gitaly/service/operations/user_delete_branch.go b/internal/gitaly/service/operations/user_delete_branch.go index 2cf59a595e..530a1f9212 100644 --- a/internal/gitaly/service/operations/user_delete_branch.go +++ b/internal/gitaly/service/operations/user_delete_branch.go @@ -34,15 +34,20 @@ func (s *Server) UserDeleteBranch(ctx context.Context, req *gitalypb.UserDeleteB } referenceName := git.NewReferenceNameFromBranchName(string(req.BranchName)) - var err error + repo := s.localrepo(req.GetRepository()) + objectHash, err := repo.ObjectHash(ctx) + if err != nil { + return nil, fmt.Errorf("detecting object format: %w", err) + } + var referenceValue git.ObjectID if expectedOldOID := req.GetExpectedOldOid(); expectedOldOID != "" { - referenceValue, err = git.ObjectHashSHA1.FromHex(expectedOldOID) + referenceValue, err = objectHash.FromHex(expectedOldOID) if err != nil { return nil, structerr.NewInvalidArgument("invalid expected old object ID: %w", err).WithMetadata("old_object_id", expectedOldOID) } - referenceValue, err = s.localrepo(req.GetRepository()).ResolveRevision( + referenceValue, err = repo.ResolveRevision( ctx, git.Revision(fmt.Sprintf("%s^{object}", referenceValue)), ) if err != nil { @@ -50,13 +55,13 @@ func (s *Server) UserDeleteBranch(ctx context.Context, req *gitalypb.UserDeleteB WithMetadata("old_object_id", expectedOldOID) } } else { - referenceValue, err = s.localrepo(req.GetRepository()).ResolveRevision(ctx, referenceName.Revision()) + referenceValue, err = repo.ResolveRevision(ctx, referenceName.Revision()) if err != nil { return nil, structerr.NewFailedPrecondition("branch not found: %q", req.BranchName) } } - if err := s.updateReferenceWithHooks(ctx, req.Repository, req.User, nil, referenceName, git.ObjectHashSHA1.ZeroOID, referenceValue); err != nil { + if err := s.updateReferenceWithHooks(ctx, req.Repository, req.User, nil, referenceName, objectHash.ZeroOID, referenceValue); err != nil { var notAllowedError hook.NotAllowedError var customHookErr updateref.CustomHookError var updateRefError updateref.Error diff --git a/internal/gitaly/service/operations/user_delete_branch_test.go b/internal/gitaly/service/operations/user_delete_branch_test.go index 7976fa4163..918cf855d7 100644 --- a/internal/gitaly/service/operations/user_delete_branch_test.go +++ b/internal/gitaly/service/operations/user_delete_branch_test.go @@ -1,5 +1,3 @@ -//go:build !gitaly_test_sha256 - package operations import ( -- GitLab