aboutsummaryrefslogtreecommitdiff
path: root/pkg/service
diff options
context:
space:
mode:
authorGabriel A. Giovanini <mail@gabrielgio.me>2025-03-30 17:34:11 +0200
committerGabriel A. Giovanini <mail@gabrielgio.me>2025-03-30 17:34:11 +0200
commit2c0347566f99afec2e3963d74f4fc970e6187217 (patch)
tree0c63e87823ab595fffcd474143fa10269a4f65fd /pkg/service
parentf19adedc4b7f71c824a59d4a797bd8872bdb0bbd (diff)
downloadcerrado-2a27ff4823e684490af742ce16998cc7ae40b55e.tar.gz
cerrado-2a27ff4823e684490af742ce16998cc7ae40b55e.tar.bz2
cerrado-2a27ff4823e684490af742ce16998cc7ae40b55e.zip
feat: Add initial support for http git cloneHEADv0.2.1master
Diffstat (limited to 'pkg/service')
-rw-r--r--pkg/service/git.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/pkg/service/git.go b/pkg/service/git.go
index 5410d7a..6aa5cd6 100644
--- a/pkg/service/git.go
+++ b/pkg/service/git.go
@@ -2,6 +2,7 @@ package service
import (
"compress/gzip"
+ "context"
"errors"
"io"
"log/slog"
@@ -299,3 +300,31 @@ func (g *GitService) GetHead(name string) (*plumbing.Reference, error) {
return repo.Head()
}
+
+func (g *GitService) WriteInfoRefs(ctx context.Context, name string, w io.Writer) error {
+ r := g.configRepo.GetByName(name)
+ if r == nil {
+ return ErrRepositoryNotFound
+ }
+
+ repo, err := git.OpenRepository(r.Path)
+ if err != nil {
+ return err
+ }
+
+ return repo.WriteInfoRefs(ctx, w)
+}
+
+func (g *GitService) WriteUploadPack(ctx context.Context, name string, re io.Reader, w io.Writer) error {
+ r := g.configRepo.GetByName(name)
+ if r == nil {
+ return ErrRepositoryNotFound
+ }
+
+ repo, err := git.OpenRepository(r.Path)
+ if err != nil {
+ return err
+ }
+
+ return repo.WriteUploadPack(ctx, re, w)
+}