From 744cff9bb2982cc635ce0aa0e9b4c44539eb3596 Mon Sep 17 00:00:00 2001 From: xuzhang3 Date: Tue, 2 Jan 2024 15:53:56 +0800 Subject: [PATCH] 1. Fix default branch not set bug when init type is Clean 2. Fix branch update when branch not ready --- .../service/git/resource_git_repository.go | 60 +++++++++---------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/azuredevops/internal/service/git/resource_git_repository.go b/azuredevops/internal/service/git/resource_git_repository.go index 8f1e831f4..8082bcf3f 100644 --- a/azuredevops/internal/service/git/resource_git_repository.go +++ b/azuredevops/internal/service/git/resource_git_repository.go @@ -183,52 +183,50 @@ func resourceGitRepositoryCreate(d *schema.ResourceData, m interface{}) error { // repository in state and will taint the resource if further errors are encountered during initialization d.SetId(createdRepo.Id.String()) - if initialization != nil && strings.EqualFold(initialization.initType, string(RepoInitTypeValues.Import)) && - strings.EqualFold(initialization.sourceType, "Git") { - importRequest := git.GitImportRequest{ - Parameters: &git.GitImportRequestParameters{ - GitSource: &git.GitImportGitSource{ - Url: &initialization.sourceURL, + if initialization != nil { + if strings.EqualFold(initialization.initType, string(RepoInitTypeValues.Import)) && strings.EqualFold(initialization.sourceType, "Git") { + importRequest := git.GitImportRequest{ + Parameters: &git.GitImportRequestParameters{ + GitSource: &git.GitImportGitSource{ + Url: &initialization.sourceURL, + }, }, - }, - Repository: createdRepo, - } + Repository: createdRepo, + } - if initialization.serviceConnectionID != "" { - importRequest.Parameters.ServiceEndpointId = converter.UUID(initialization.serviceConnectionID) - importRequest.Parameters.DeleteServiceEndpointAfterImportIsDone = converter.Bool(false) - } + if initialization.serviceConnectionID != "" { + importRequest.Parameters.ServiceEndpointId = converter.UUID(initialization.serviceConnectionID) + importRequest.Parameters.DeleteServiceEndpointAfterImportIsDone = converter.Bool(false) + } - _, importErr := createImportRequest(clients, importRequest, projectID.String(), *createdRepo.Name) - if importErr != nil { - return fmt.Errorf("Error import repository in Azure DevOps: %+v ", importErr) + _, importErr := createImportRequest(clients, importRequest, projectID.String(), *createdRepo.Name) + if importErr != nil { + return fmt.Errorf("Error import repository in Azure DevOps: %+v ", importErr) + } } - // update default_branch if configured - err := waitForBranch(clients, repo.Name, projectID) - if err != nil { - return err - } - if v := d.Get("default_branch").(string); v != "" { - createdRepo.DefaultBranch = converter.String(v) - _, err = updateGitRepository(clients, createdRepo, projectID) + if strings.EqualFold(initialization.initType, string(RepoInitTypeValues.Clean)) || + strings.EqualFold(initialization.initType, string(RepoInitTypeValues.Fork)) { + err = initializeGitRepository(clients, createdRepo, repo.DefaultBranch) if err != nil { - return fmt.Errorf(" updating repository `default_branch`: %+v", err) + return fmt.Errorf(" initializing repository in Azure DevOps: %+v ", err) } } } - if initialization != nil && strings.EqualFold(initialization.initType, string(RepoInitTypeValues.Clean)) { - err = initializeGitRepository(clients, createdRepo, repo.DefaultBranch) + if !strings.EqualFold(initialization.initType, string(RepoInitTypeValues.Uninitialized)) || parentRepoRef != nil { + err := waitForBranch(clients, repo.Name, projectID) if err != nil { - return fmt.Errorf("Error initializing repository in Azure DevOps: %+v", err) + return err } } - if initialization != nil && !(strings.EqualFold(initialization.initType, string(RepoInitTypeValues.Uninitialized)) && parentRepoRef == nil) { - err := waitForBranch(clients, repo.Name, projectID) + // update default_branch + if v := d.Get("default_branch").(string); v != "" { + createdRepo.DefaultBranch = converter.String(v) + _, err = updateGitRepository(clients, createdRepo, projectID) if err != nil { - return err + return fmt.Errorf(" updating repository `default_branch`: %+v", err) } }