Files
codit/backend/internal/git/repos.go

37 lines
714 B
Go

package git
import "os"
import "path/filepath"
import git "github.com/go-git/go-git/v5"
type RepoManager struct {
BaseDir string
}
func (rm *RepoManager) Ensure() error {
return os.MkdirAll(rm.BaseDir, 0o755)
}
func (rm *RepoManager) RepoPath(repoID string) string {
return filepath.Join(rm.BaseDir, repoID)
}
func (rm *RepoManager) RepoPathFor(projectID, repoName string) string {
return filepath.Join(rm.BaseDir, projectID, repoName+".git")
}
func (rm *RepoManager) InitRepo(repoPath string, bare bool) error {
var err error
err = rm.Ensure()
if err != nil {
return err
}
err = os.MkdirAll(repoPath, 0o755)
if err != nil {
return err
}
_, err = git.PlainInit(repoPath, bare)
return err
}