func()

in controllers/codebase/service/chain/put_project.go [320:386]


func (h *PutProject) setDefaultBranch(
	ctx context.Context,
	gitServer *codebaseApi.GitServer,
	codebase *codebaseApi.Codebase,
	gitProviderToken,
	privateSSHKey string,
) error {
	log := ctrl.LoggerFrom(ctx).
		WithValues("gitProvider", gitServer.Spec.GitProvider)

	log.Info("Start setting default branch", "defaultBranch", codebase.Spec.DefaultBranch)

	if gitServer.Spec.GitProvider == codebaseApi.GitProviderGerrit {
		log.Info("Set HEAD to default branch in Gerrit")

		err := h.gerrit.SetHeadToBranch(
			gitServer.Spec.SshPort,
			privateSSHKey,
			gitServer.Spec.GitHost,
			gitServer.Spec.GitUser,
			codebase.Spec.GetProjectID(),
			codebase.Spec.DefaultBranch,
			log,
		)
		if err != nil {
			return fmt.Errorf(
				"set remote HEAD for codebase %s to default branch %s has been failed: %w",
				codebase.Spec.GetProjectID(),
				codebase.Spec.DefaultBranch,
				err,
			)
		}

		log.Info("Set HEAD to default branch in Gerrit has been finished")

		return nil
	}

	log.Info("Set default branch in git provider")

	gitProvider, err := h.gitProjectProvider(gitServer, gitProviderToken)
	if err != nil {
		return fmt.Errorf("failed to create git provider: %w", err)
	}

	if err = gitProvider.SetDefaultBranch(
		ctx,
		gitprovider.GetGitProviderAPIURL(gitServer),
		gitProviderToken,
		codebase.Spec.GetProjectID(),
		codebase.Spec.DefaultBranch,
	); err != nil {
		if errors.Is(err, gitprovider.ErrApiNotSupported) {
			// We can skip this error, because it is not supported by Git provider.
			// And this is not critical for the whole process.
			log.Info("Setting default branch is not supported by Git provider. Set it manually if needed")

			return nil
		}

		return fmt.Errorf("failed to set default branch: %w", err)
	}

	log.Info("Default branch has been set")

	return nil
}