forked from tangled.org/core
Monorepo for Tangled — https://tangled.org
at master 946 B view raw
1package git 2 3import ( 4 "errors" 5 "fmt" 6 "os" 7 "path/filepath" 8 9 gogit "github.com/go-git/go-git/v5" 10 "github.com/go-git/go-git/v5/config" 11 "github.com/go-git/go-git/v5/plumbing" 12) 13 14func InitBare(path, defaultBranch string) error { 15 parent := filepath.Dir(path) 16 17 if err := os.MkdirAll(parent, 0755); errors.Is(err, os.ErrExist) { 18 return fmt.Errorf("error creating user directory: %w", err) 19 } 20 21 repository, err := gogit.PlainInit(path, true) 22 if err != nil { 23 return err 24 } 25 26 // set up default branch 27 err = repository.CreateBranch(&config.Branch{ 28 Name: defaultBranch, 29 }) 30 if err != nil { 31 return fmt.Errorf("creating branch: %w", err) 32 } 33 34 defaultReference := plumbing.ReferenceName(fmt.Sprintf("refs/heads/%s", defaultBranch)) 35 36 ref := plumbing.NewSymbolicReference(plumbing.HEAD, defaultReference) 37 if err = repository.Storer.SetReference(ref); err != nil { 38 return fmt.Errorf("creating symbolic reference: %w", err) 39 } 40 41 return nil 42}