Как получить имя папки репозитория Azure devops git, в которой пользователь внес изменения с помощью powershell (Azure devops REST API)

#powershell #azure-devops #azure-powershell #azure-devops-rest-api #azure-repos

#powershell #azure-devops #azure-powershell #azure-devops-rest-api #azure-репозитории

Вопрос:

Я работаю над сценарием, в котором я хочу узнать имя папки, в которой пользователь внес изменения

 $AzureDevOpsPAT = ""
 
$OrganizationName = ""

$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic '   [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) }

$UriOrga = "https://dev.azure.com/$($OrganizationName)/"

$uriAccount = $UriOrga   "{Project Name}/_apis/git/repositories/{RepositoryID}/items?api-version=6.0-preview.1"

Invoke-RestMethod -Uri $uriAccount -Method get -Headers $AzureDevOpsAuthenicationHeader -ContentType "application/json"    
  

Это возвращает (он возвращает идентификатор недавней фиксации, идентификатор объекта, но в path он возвращает только /)

путь=/;

Также с

 $uriAccount = $UriOrga   "{Project Name}/_apis/git/repositories/{REPO ID}/commits?api-version=6.0-preview.1"
  

Он возвращает —

  author=; committer=; (Nothing for these values just blank)
  

Вопрос — я использую неправильный вызов API? Как я могу получить имя папки, имя коммиттера?

Спасибо

Ответ №1:

Мы можем получить имя папки фиксации через идентификатор фиксации

 GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/changes?api-version=6.0-preview.1
  

Результат:

введите описание изображения здесь

И получить имя коммиттера через приведенный ниже API

 Get https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}?api-version=6.0-preview.1 
  

Результат:

введите описание изображения здесь

Update1

получить имя коммиттера

Я использовал postman для отслеживания этих результатов, и я также попробовал сценарий powershell, пожалуйста, проверьте его.

 $url = "https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}?api-version=6.0-preview.1"
$connectionToken="PAT"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$CommitInfo = Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get
Write-Host "CommitInfo = $($CommitInfo | ConvertTo-Json -Depth 100)"
  

Результат:

введите описание изображения здесь

Комментарии:

1. Привет, @vito, где вы отслеживаете эти результаты? Я попытался развернуть скрипты PS локально, и он выдает мне все пустые значения с добавлением идентификатора фиксации.

2. Привет @megha, я обновил ответ и добавил скрипт powershell, пожалуйста, проверьте его.

Ответ №2:

Вы используете запрос без каких-либо фильтров. Попробуйте добавить дополнительные фильтры:

  1. Для поиска элементов вы можете добавить:

  2. Для поиска коммитов вы можете добавить