particle-academy / fancy-git-gitlab
GitLab.com and Self-Managed adapter for particle-academy/fancy-git.
Package info
github.com/Particle-Academy/fancy-git-gitlab-php
pkg:composer/particle-academy/fancy-git-gitlab
v0.3.0
2026-09-14 03:10 UTC
Requires
- php: ^8.4
- guzzlehttp/guzzle: ^7.15.1
- particle-academy/fancy-git: >=0.1.1 <2.0
Requires (Dev)
- phpunit/phpunit: ^11.0|^12.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
GitLab.com and GitLab Self-Managed implementation of the Fancy Git provider contract, over a small first-party GitLab REST v4 client.
use FancyGit\GitLab\GitLabClient; use FancyGit\GitLab\GitLabProvider; use FancyGit\GitLab\TokenType; // GitLab.com, or a self-managed instance by its https URL. $gitlab = GitLabProvider::withToken($token); $gitlab = GitLabProvider::withToken($token, 'https://gitlab.example.com'); // OAuth or CI job tokens, or your own Guzzle client (proxy, CA bundle, timeouts). $gitlab = new GitLabProvider(new GitLabClient('https://gitlab.example.com', $token, TokenType::OAuth, $guzzle));
- The base URL is the instance URL (a relative URL root such as
https://example.com/gitlabworks);/api/v4is added for you. It must behttps, with no credentials, query or fragment. - The base URL is trusted configuration. Private and loopback addresses are allowed on purpose, because that is where most self-managed instances live — so if end users can supply it, check the host against your own allowlist first.
- Requests only ever go to that instance. Redirects are not followed, and a pagination link pointing anywhere else is refused, because every request carries the token.
- Failures are
FancyGit\Error\GitExceptionwith aGitErrorCode(auth,not_found,conflict,invalid_argument,rate_limited, …); the HTTP status is the exception code, and a 429 message says when to retry.