aboutsummaryrefslogtreecommitdiffstats
path: root/services/repository/archiver
diff options
context:
space:
mode:
authorAdam Majer <amajer@suse.de>2023-12-13 21:02:00 +0000
committerGitHub <noreply@github.com>2023-12-13 21:02:00 +0000
commitcbf923e87bca0f50c2c01a60ccf544b63c365e98 (patch)
tree9e2e66c688bdc0f740e1ae333847dfb33677c730 /services/repository/archiver
parent064f05204c0539d1f92895776dee7f626a628e3b (diff)
downloadgitea-cbf923e87bca0f50c2c01a60ccf544b63c365e98.tar.gz
gitea-cbf923e87bca0f50c2c01a60ccf544b63c365e98.zip
Abstract hash function usage (#28138)
Refactor Hash interfaces and centralize hash function. This will allow easier introduction of different hash function later on. This forms the "no-op" part of the SHA256 enablement patch.
Diffstat (limited to 'services/repository/archiver')
-rw-r--r--services/repository/archiver/archiver.go28
1 files changed, 3 insertions, 25 deletions
diff --git a/services/repository/archiver/archiver.go b/services/repository/archiver/archiver.go
index 9f1ea48dca..f700e3af5d 100644
--- a/services/repository/archiver/archiver.go
+++ b/services/repository/archiver/archiver.go
@@ -9,7 +9,6 @@ import (
"fmt"
"io"
"os"
- "regexp"
"strings"
"time"
@@ -36,10 +35,6 @@ type ArchiveRequest struct {
CommitID string
}
-// SHA1 hashes will only go up to 40 characters, but SHA256 hashes will go all
-// the way to 64.
-var shaRegex = regexp.MustCompile(`^[0-9a-f]{4,64}$`)
-
// ErrUnknownArchiveFormat request archive format is not supported
type ErrUnknownArchiveFormat struct {
RequestFormat string
@@ -96,30 +91,13 @@ func NewRequest(repoID int64, repo *git.Repository, uri string) (*ArchiveRequest
r.refName = strings.TrimSuffix(uri, ext)
- var err error
// Get corresponding commit.
- if repo.IsBranchExist(r.refName) {
- r.CommitID, err = repo.GetBranchCommitID(r.refName)
- if err != nil {
- return nil, err
- }
- } else if repo.IsTagExist(r.refName) {
- r.CommitID, err = repo.GetTagCommitID(r.refName)
- if err != nil {
- return nil, err
- }
- } else if shaRegex.MatchString(r.refName) {
- if repo.IsCommitExist(r.refName) {
- r.CommitID = r.refName
- } else {
- return nil, git.ErrNotExist{
- ID: r.refName,
- }
- }
- } else {
+ commitID, err := repo.ConvertToGitID(r.refName)
+ if err != nil {
return nil, RepoRefNotFoundError{RefName: r.refName}
}
+ r.CommitID = commitID.String()
return r, nil
}