Невозможно получить список толчков при передаче параметра «searchCriteria.refName = master» в Azure DevOps - PullRequest
0 голосов
/ 14 апреля 2020

Вот мой фрагмент кода:

/*
 * Get Pushes List Doc: https://docs.microsoft.com/en-us/rest/api/azure/devops/git/pushes/list?view=azure-devops-rest-5.1
 */
function getPushesList(){
    global $baseUri;
    global $organization;
    global $project;
    global $repositoryId;
    global $branch;
    global $username;
    global $accessToken;
    $url = $baseUri . '/' . $organization . '/' . $project . '/_apis/git/repositories/' . $repositoryId . '/pushes?api-version=5.1';
    $queryArr = [
        'searchCriteria.refName' => $branch,
        'searchCriteria.includeRefUpdates' => 'false',
        '$top' => 1,
    ];
    $queryStr = http_build_query($queryArr);
    $authorization = 'basic ' . base64_encode($username . ':' . $accessToken);
    $url .= '&' . urldecode($queryStr);
    //$url sample: https://dev.azure.com/kmx3ecup/img_bed/_apis/git/repositories/img_bed/pushes?api-version=5.1&searchCriteria.refName=&searchCriteria.includeRefUpdates=false&$top=1
    // echo $url;exit;
    $ch = curl_init();
    $options = [
        CURLOPT_URL => $url,
        CURLOPT_HTTPHEADER => [
            'authorization: ' . $authorization
        ],
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => 0,
    ];
    //In case you need a proxy
    // $options[CURLOPT_PROXY] = 'http://127.0.0.1:1087';
    curl_setopt_array($ch, $options);
    $retArr = curl_exec($ch);
    if(curl_errno($ch)){
        echo 'Error: ' . curl_error($ch);
    }
    curl_close($ch);
    return $retArr;
}

$baseUri = 'https://dev.azure.com';

$organization = '<YOUR_ORGANIZATION>';
$project = '<YOUR_PROJECT_NAME>';
$repositoryId = '<YOUR_REPOSITORY_ID_OR_REPOSITORY_NAME>';
$branch = '';
//Question: if I set $branch to "master", then it returns: {"count":0,"value":[]}, but actually master branch have many files.
//DOC: https://docs.microsoft.com/en-us/rest/api/azure/devops/git/pushes/list?view=azure-devops-rest-5.1
//$branch = 'master';
$username = '<YOUR_USERNAME>';
$accessToken = '<YOUR_ACCESS_TOKEN>';
$reponseJson = getPushesList();
echo $reponseJson;

Вопрос: Если я установлю $branch на "master", он вернет: {"count": 0, "value": []}, но на самом деле главная ветвь имеет много файлов, и если я установлю $branch на пустую строку, она вернет нормальный результат, но у меня есть только одна ветвь, то есть ветвь master, я имею в виду, если я установлю ветку на пустую строку, она все равно получение файлов из ветки по умолчанию (master ветка), верно?

1 Ответ

1 голос
/ 15 апреля 2020

Если вы хотите использовать параметр searchCriteria.refName для запроса главной ветки, вы должны установить $branch в refs/heads/master, что является именем ссылки для главной ветви.

Если вы установите пустую $ branch Строка, результат не из области по умолчанию. Вы получите пуш-листы, упорядоченные по pu sh id на уровне репо. В вашем случае он вернет списки главной ветви, поскольку у вас есть только одна ветвь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...