in pkg/git/git.go [338:385]
func (*GitProvider) BareToNormal(p string) error {
const readWriteExecutePermBits = 0o777
gitDir := path.Join(p, gitDirName)
if err := os.MkdirAll(gitDir, readWriteExecutePermBits); err != nil {
return fmt.Errorf("failed to create .git folder: %w", err)
}
files, err := os.ReadDir(p)
if err != nil {
return fmt.Errorf("failed to list dir: %w", err)
}
for _, f := range files {
if f.Name() == gitDirName {
continue
}
oldPath := path.Join(p, f.Name())
newPath := path.Join(p, gitDirName, f.Name())
if err := os.Rename(oldPath, newPath); err != nil {
return fmt.Errorf("failed to rename file: %w", err)
}
}
cmd := exec.Command(gitCMD, gitDirArg, gitDir, "config", "--local",
"--bool", "core.bare", "false")
if bts, err := cmd.CombinedOutput(); err != nil {
return fmt.Errorf("%s: %w", string(bts), err)
}
cmd = exec.Command(gitCMD, gitDirArg, gitDir, "config", "--local",
"--bool", "remote.origin.mirror", "false")
if bts, err := cmd.CombinedOutput(); err != nil {
return fmt.Errorf("%s: %w", string(bts), err)
}
cmd = exec.Command(gitCMD, gitDirArg, gitDir, "reset", "--hard")
cmd.Dir = p
if bts, err := cmd.CombinedOutput(); err != nil {
return fmt.Errorf("%s: %w", string(bts), err)
}
return nil
}