NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Git for Laravel

Dátový model a surové dáta

Každý objekt zdroja je nezávislý od platformy: nesie ProviderName, z ktorého pochádza, normalizovaný enum ResourceState namiesto surového reťazca open/opened/OPEN a metódu raw(), ktorá vráti presný dekódovaný payload platformy pre akékoľvek pole, ktoré objekt nemodeluje. raw sa nikdy neserializuje do toArray() ani toJson():

use RoundlyConsulting\Git\Enums\ResourceState;

$pr = Git::github()->repo('acme/api')->pullRequest(1)->get();

$pr->state;                          // ResourceState::Open — identical across GitHub/GitLab/Bitbucket
$pr->state === ResourceState::Merged;
$pr->draft;                          // bool
$pr->provider;                       // ProviderName::Github
$pr->raw()['mergeable'];             // any unmodelled provider field, still reachable

$pr->toArray();                      // canonical shape — raw is never serialized
$pr->toJson();

Mapovanie stavov

Pull requesty a issues normalizujú stav na každej platforme rovnako; nerozpoznané hodnoty sa namiesto výnimky zmenia na Unknown a pôvodný reťazec zostáva dostupný cez raw():

ResourceStateGitHubGitLabBitbucket
OpenopenopenedOPEN
Closedclosedclosed, lockedDECLINED, SUPERSEDED
MergedmergedmergedMERGED
Unknownčokoľvek inéčokoľvek inéčokoľvek iné

Stav konceptu (draft) je samostatná booleovská hodnota — PullRequest::$draft, ktorú balík na všetkých troch platformách číta z poľa draft, z REST API aj z webhookov — nie stav.

Head commit, viditeľnosť a odkazy

PullRequest::$headSha a $headRepository (owner/name repozitára s head vetvou — pri pull requeste z forku repozitár forku) a Repository::$private, $language a $webUrl môžu byť null a plnia sa z REST aj webhook payloadov. V konštruktore sú za raw, takže pozičné volania new PullRequest(…) a new Repository(…) fungujú ďalej, a každé z nich je v toArray() aj v JSON:

PoleGitHubGitLabBitbucket
PullRequest::$headShahead.shasha (REST), last_commit.id (hook)source.commit.hash — skrátený 12-znakový hash
PullRequest::$headRepositoryhead.repo.full_name (null pri zmazanom forku)null — nesie sa len id projektusource.repository.full_name
Repository::$privateprivatevisibility iné ako public — internal sa počíta za súkromný; visibility_level z hooku sa číta rovnakois_private
Repository::$languagelanguagenull — v payloade projektu chýbalanguage (prázdne → null)
Repository::$webUrlhtml_urlweb_urllinks.html.href

Enumy

Každý enum — Feature, ProviderName, ResourceState, MergeMethod, ReviewEvent, DiffSide, CommentTarget, ComparisonStatus, ActivityType, WorkflowStatus a WorkflowConclusion — zdieľa pomocné metódy z enums-for-laravel: values(), labels(), options(), validationRule() a vyhľadávanie prípadov:

use RoundlyConsulting\Git\Enums\ProviderName;

ProviderName::values();           // Collection: github, gitlab, bitbucket
ProviderName::options();          // {value, label, name} options for a select
ProviderName::validationRule();   // "in:github,gitlab,bitbucket"
ProviderName::Github->label();    // "GitHub"

$request->validate(['provider' => ['required', ProviderName::validationRule()]]);

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.