diff options
Diffstat (limited to 'pkg/service')
| -rw-r--r-- | pkg/service/git.go | 29 | 
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) +} | 
