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
}