func()

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
}