Modules/AzureDevOpsDsc.Common/Api/Functions/Private/Api/RepositorySettings/Set-DevOpsRepositorySettings.ps1
|
Function Set-DevOpsRepositorySettings { [CmdletBinding()] param( [Parameter(Mandatory)][string]$ApiUri, [Parameter(Mandatory)][string]$ProjectName, [Parameter(Mandatory)][string]$RepositoryId, [Parameter()][nullable[bool]]$DefaultBranchName, [Parameter()][nullable[bool]]$AllowSquashMerge, [Parameter()][nullable[bool]]$AllowNoFastForward, [Parameter()][nullable[bool]]$AllowRebase, [Parameter()][nullable[bool]]$AllowRebaseMerge, [Parameter()][nullable[bool]]$AllowEditDescriptionDuringCompletion, [Parameter()][nullable[bool]]$AllowDeletionOfLockedBranches, [Parameter()][string]$ApiVersion = '7.1' ) $body = @{} if ($PSBoundParameters.ContainsKey('AllowSquashMerge')) { $body['allowSquashMerge'] = $AllowSquashMerge } if ($PSBoundParameters.ContainsKey('AllowNoFastForward')) { $body['allowNoFastForward'] = $AllowNoFastForward } if ($PSBoundParameters.ContainsKey('AllowRebase')) { $body['allowRebase'] = $AllowRebase } if ($PSBoundParameters.ContainsKey('AllowRebaseMerge')) { $body['allowRebaseMerge'] = $AllowRebaseMerge } if ($PSBoundParameters.ContainsKey('AllowEditDescriptionDuringCompletion')) { $body['allowEditDescriptionDuringCompletion'] = $AllowEditDescriptionDuringCompletion } if ($PSBoundParameters.ContainsKey('AllowDeletionOfLockedBranches')) { $body['allowDeletionOfLockedBranches'] = $AllowDeletionOfLockedBranches } $params = @{ Uri = '{0}/{1}/_apis/git/repositories/{2}/settings?api-version={3}' -f $ApiUri.TrimEnd('/'), $ProjectName, $RepositoryId, $ApiVersion Method = 'PATCH' ContentType = 'application/json' Body = $body | ConvertTo-Json } try { return Invoke-AzDevOpsApiRestMethod @params } catch { # Invoke-AzDevOpsApiRestMethod wraps errors in a string exception, so check the message. # 404 means this org/version does not support PATCH on this settings endpoint. if ($_.Exception.Message -match '404') { Write-Warning "[Set-DevOpsRepositorySettings] PATCH settings returned 404 for '$RepositoryId' — endpoint may not be supported on this org. Settings not applied." return } Throw "[Set-DevOpsRepositorySettings] Failed to update repository settings for '$RepositoryId': $_" } } |