Fix GitLab endless loop thanks to API bug, fixes #6615

main
Jordi Boggiano 7 years ago
parent 1930357baf
commit a144b5e7ed

@ -278,7 +278,8 @@ class GitLabDriver extends VcsDriver
*/ */
protected function getReferences($type) protected function getReferences($type)
{ {
$resource = $this->getApiUrl().'/repository/'.$type.'?per_page=100'; $perPage = 100;
$resource = $this->getApiUrl().'/repository/'.$type.'?per_page='.$perPage;
$references = array(); $references = array();
do { do {
@ -287,11 +288,16 @@ class GitLabDriver extends VcsDriver
foreach ($data as $datum) { foreach ($data as $datum) {
$references[$datum['name']] = $datum['commit']['id']; $references[$datum['name']] = $datum['commit']['id'];
// Keep the last commit date of a reference to avoid // Keep the last commit date of a reference to avoid
// unnecessary API call when retrieving the composer file. // unnecessary API call when retrieving the composer file.
$this->commits[$datum['commit']['id']] = $datum['commit']; $this->commits[$datum['commit']['id']] = $datum['commit'];
}
if (count($data) >= $perPage) {
$resource = $this->getNextPage();
} else {
$resource = false;
} }
$resource = $this->getNextPage();
} while ($resource); } while ($resource);
return $references; return $references;

Loading…
Cancel
Save