func()

in controllers/codebase/service/chain/put_project.go [237:278]


func (h *PutProject) checkoutBranch(ctx context.Context, codebase *codebaseApi.Codebase, workDir string) error {
	log := ctrl.LoggerFrom(ctx).WithValues(
		"defaultBranch",
		codebase.Spec.DefaultBranch,
		"branchToCopy",
		codebase.Spec.BranchToCopyInDefaultBranch,
	)

	repoUrl, err := util.GetRepoUrl(codebase)
	if err != nil {
		return fmt.Errorf("failed to build repo url: %w", err)
	}

	if codebase.Spec.BranchToCopyInDefaultBranch != "" && codebase.Spec.DefaultBranch != codebase.Spec.BranchToCopyInDefaultBranch {
		log.Info("Start checkout branch to copy")

		err = CheckoutBranch(repoUrl, workDir, codebase.Spec.BranchToCopyInDefaultBranch, h.git, codebase, h.client)
		if err != nil {
			return fmt.Errorf("failed to checkout default branch %s: %w", codebase.Spec.DefaultBranch, err)
		}

		log.Info("Start replace default branch")

		err = h.replaceDefaultBranch(ctx, workDir, codebase.Spec.DefaultBranch, codebase.Spec.BranchToCopyInDefaultBranch)
		if err != nil {
			return fmt.Errorf("failed to replace master: %w", err)
		}

		return nil
	}

	log.Info("Start checkout branch")

	err = CheckoutBranch(repoUrl, workDir, codebase.Spec.DefaultBranch, h.git, codebase, h.client)
	if err != nil {
		return fmt.Errorf("failed to checkout default branch %s: %w", codebase.Spec.DefaultBranch, err)
	}

	log.Info("Checkout branch finished")

	return nil
}