From e8f9f1b6d840a52edca1d36253ebf88cb0b969ab Mon Sep 17 00:00:00 2001 From: Graham Campbell Date: Wed, 6 May 2026 12:51:59 +0100 Subject: [PATCH 1/3] Add repository branch listing parameters Co-authored-by: Gabriele Barcella <33417277+barcigabri@users.noreply.github.com> --- CHANGELOG.md | 1 + src/Api/Repositories.php | 18 ++++++++++++++++-- tests/Api/RepositoriesTest.php | 23 +++++++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31fadf60..6cb3a713 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Add support for `with_custom_attributes` and `with_projects` in `Groups::show` * Add support for project remote mirror read endpoints * Add support for permanent project removal and project restoration +* Add support for `regex`, `sort`, and `page_token` in `Repositories::branches` ## [12.0.0] - 2025-02-23 diff --git a/src/Api/Repositories.php b/src/Api/Repositories.php index 38e11606..c5101867 100644 --- a/src/Api/Repositories.php +++ b/src/Api/Repositories.php @@ -32,14 +32,28 @@ class Repositories extends AbstractApi /** * @param array $parameters { * - * @var string $search + * @var string $search Return branches matching the search string. + * @var string $regex Return branches matching an RE2 regex. + * @var string $sort Return branches sorted by name_asc, updated_asc, or updated_desc. + * @var string $page_token Name of the branch to start pagination from. * } */ public function branches(int|string $project_id, array $parameters = []): mixed { $resolver = $this->createOptionsResolver(); $resolver->setDefined('search') - ->setAllowedTypes('search', 'string'); + ->setAllowedTypes('search', 'string') + ; + $resolver->setDefined('regex') + ->setAllowedTypes('regex', 'string') + ; + $resolver->setDefined('sort') + ->setAllowedTypes('sort', 'string') + ->setAllowedValues('sort', ['name_asc', 'updated_asc', 'updated_desc']) + ; + $resolver->setDefined('page_token') + ->setAllowedTypes('page_token', 'string') + ; return $this->get($this->getProjectPath($project_id, 'repository/branches'), $resolver->resolve($parameters)); } diff --git a/tests/Api/RepositoriesTest.php b/tests/Api/RepositoriesTest.php index 3cca7e8d..f329703f 100644 --- a/tests/Api/RepositoriesTest.php +++ b/tests/Api/RepositoriesTest.php @@ -38,6 +38,29 @@ public function shouldGetBranches(): void $this->assertEquals($expectedArray, $api->branches(1, ['search' => '^term'])); } + #[Test] + public function shouldGetBranchesWithAdditionalParameters(): void + { + $expectedArray = [ + ['name' => 'release/1.0'], + ['name' => 'release/1.1'], + ]; + $parameters = [ + 'regex' => '^release/.*', + 'sort' => 'updated_desc', + 'page_token' => 'release/1.0', + ]; + + $api = $this->getApiMock(); + $api->expects($this->once()) + ->method('get') + ->with('projects/1/repository/branches', $parameters) + ->willReturn($expectedArray) + ; + + $this->assertEquals($expectedArray, $api->branches(1, $parameters)); + } + #[Test] public function shouldGetBranch(): void { From 3cf144559e8fb8f46dd2bebb0034fe1b8aca2987 Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Wed, 6 May 2026 11:52:29 +0000 Subject: [PATCH 2/3] Apply fixes from StyleCI --- src/Api/Repositories.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Api/Repositories.php b/src/Api/Repositories.php index c5101867..89bbf45f 100644 --- a/src/Api/Repositories.php +++ b/src/Api/Repositories.php @@ -32,9 +32,9 @@ class Repositories extends AbstractApi /** * @param array $parameters { * - * @var string $search Return branches matching the search string. - * @var string $regex Return branches matching an RE2 regex. - * @var string $sort Return branches sorted by name_asc, updated_asc, or updated_desc. + * @var string $search return branches matching the search string + * @var string $regex return branches matching an RE2 regex + * @var string $sort return branches sorted by name_asc, updated_asc, or updated_desc * @var string $page_token Name of the branch to start pagination from. * } */ From 630d3197fa880a96bd4d47ff06d39cf88de9dce7 Mon Sep 17 00:00:00 2001 From: Graham Campbell Date: Wed, 6 May 2026 12:58:34 +0100 Subject: [PATCH 3/3] Remove branch pagination token support --- CHANGELOG.md | 2 +- src/Api/Repositories.php | 4 ---- tests/Api/RepositoriesTest.php | 1 - 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cb3a713..e2325af3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Add support for `with_custom_attributes` and `with_projects` in `Groups::show` * Add support for project remote mirror read endpoints * Add support for permanent project removal and project restoration -* Add support for `regex`, `sort`, and `page_token` in `Repositories::branches` +* Add support for `regex` and `sort` in `Repositories::branches` ## [12.0.0] - 2025-02-23 diff --git a/src/Api/Repositories.php b/src/Api/Repositories.php index 89bbf45f..fe5ddefd 100644 --- a/src/Api/Repositories.php +++ b/src/Api/Repositories.php @@ -35,7 +35,6 @@ class Repositories extends AbstractApi * @var string $search return branches matching the search string * @var string $regex return branches matching an RE2 regex * @var string $sort return branches sorted by name_asc, updated_asc, or updated_desc - * @var string $page_token Name of the branch to start pagination from. * } */ public function branches(int|string $project_id, array $parameters = []): mixed @@ -51,9 +50,6 @@ public function branches(int|string $project_id, array $parameters = []): mixed ->setAllowedTypes('sort', 'string') ->setAllowedValues('sort', ['name_asc', 'updated_asc', 'updated_desc']) ; - $resolver->setDefined('page_token') - ->setAllowedTypes('page_token', 'string') - ; return $this->get($this->getProjectPath($project_id, 'repository/branches'), $resolver->resolve($parameters)); } diff --git a/tests/Api/RepositoriesTest.php b/tests/Api/RepositoriesTest.php index f329703f..a59ec39d 100644 --- a/tests/Api/RepositoriesTest.php +++ b/tests/Api/RepositoriesTest.php @@ -48,7 +48,6 @@ public function shouldGetBranchesWithAdditionalParameters(): void $parameters = [ 'regex' => '^release/.*', 'sort' => 'updated_desc', - 'page_token' => 'release/1.0', ]; $api = $this->getApiMock();