---
title: "Pull requesty, issues a súbory — Git for Laravel | Roundly"
description: "Čítajte pull/merge requesty, issues, tagy, releasy, dekódovaný obsah súborov, diffy, prispievateľov a jazyky ako typované objekty."
url: https://roundly-consulting.com/sk/open-source/navody/git-for-laravel/citanie-dat
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Git for Laravel](https://roundly-consulting.com/sk/open-source/navody/git-for-laravel.md)

# Pull requesty, issues a súbory

Všetky ostatné čítania fungujú rovnako — zoznamy vracajú Page, jednotlivé zdroje typovaný objekt:

```php
$repo = Git::github()->repo('acme/api');

$repo->pullRequests();                         // Page<PullRequest>, open by default
$repo->pullRequests('closed', perPage: 50);
$repo->pullRequest(7)->get();                  // GitLab MRs, Bitbucket PRs
$repo->issues();                               // Page<Issue>
$repo->issue(12);
$repo->tags();                                 // Page<Tag>
$repo->releases();                             // Page<Release>
$repo->release('v1.0');                        // by tag or id
$repo->contents('README.md', ref: 'main');     // FileContent (decoded); no ref = the default branch
$repo->compare('main', 'feature');             // Comparison
$repo->contributors();                         // Page<Contributor>
$repo->languages();                            // ['PHP' => 12345, ...]
```

pullRequests() a issues() prijímajú stav (predvolene open); balík ho preloží do zápisu konkrétnej platformy, takže open znamená opened na GitLabe a OPEN na Bitbuckete a closed si od Bitbucketu vyžiada DECLINED aj SUPERSEDED. Merge requesty z GitLabu aj pull requesty z Bitbucketu sa vracajú ako ten istý objekt PullRequest. contents() bez refu číta na každej platforme predvolenú vetvu.

- issues() na GitHube vypíše len issues — endpoint vracia aj pull requesty, tie sa preto vynechajú; hasMore sa naďalej riadi hlavičkou Link, takže stránka môže obsahovať menej položiek než perPage. issue() s číslom pull requestu vyhodí rovnakú RequestException 404 ako chýbajúce issue.
- release() na GitHube najprv skúsi tag a potom — pri čisto číselnej hodnote, ktorej nezodpovedá žiadny tag — číselné id releasu.
- contents() na GitHube vráti celý súbor až do 100 MB; súbory nad 1 MB číta cez endpoint blobov. Cesta k adresáru vyhodí OutOfScopeException s názvom cesty.
- compare() vráti aj commity medzi oboma refmi od najstaršieho spolu s totalCommits a — na GitHube — so status: ComparisonStatus Ahead, Behind, Identical alebo Diverged. GitHub pošle najnovších 250 commitov, no započíta všetky, takže totalCommits väčšie ako count($diff->commits) znamená orezaný zoznam; súbory končia na 300. GitLab vyplní commits aj totalCommits, no status nechá null, lebo nevie rozlíšiť diverged od ahead — rovnako ako stav, ktorý GitHub nezdokumentoval.

## Súbory a diffy

```php
$repo = Git::github()->repo('acme/api');

$file = $repo->contents('composer.json', ref: 'main');
$file->path;      // "composer.json"
$file->content;   // the decoded file body
$file->sha;       // blob sha — what updateFile() needs
$file->size;      // bytes

$diff = $repo->compare('main', 'feature/ci');
$diff->aheadBy;
$diff->behindBy;
$diff->status;        // ?ComparisonStatus — Ahead, Behind, Identical or Diverged (GitHub)
$diff->totalCommits;  // ?int — every commit between the two refs
$diff->commits;       // list<Commit>, oldest first

$truncated = $diff->totalCommits > count($diff->commits); // GitHub sends the newest 250

foreach ($diff->files as $changed) {    // list<ComparisonFile>
    $changed->filename;
    $changed->status;                   // e.g. "modified"
    $changed->additions;
    $changed->deletions;
}
```

## Výsledné objekty

| Objekt | Polia |
| --- | --- |
| `PullRequest` | provider, id, number, title, body, state, sourceBranch, targetBranch, author, url, createdAt, draft, headSha, headRepository |
| `Issue` | provider, id, number, title, body, state, author, url, createdAt |
| `Tag` | provider, name, sha, url |
| `Release` | provider, id, tagName, name, body, draft, prerelease, url, createdAt |
| `FileContent` | path, content (dekódovaný), sha, size, url |
| `Comparison` | base, head, aheadBy, behindBy, files (zoznam ComparisonFile: filename, status, additions, deletions), status (ComparisonStatus), totalCommits, commits (zoznam Commit od najstaršieho) |
| `Branch` | provider, name, sha |
| `Activity` | provider, id, type (ActivityType), ref, before, after, actor, occurredAt |
| `Contributor` | id, name, avatar, contributions |
| `Comment` | id, body, author, url, createdAt |
| `Author / Owner` | name, email, avatar / id, name, avatar |

Schopnosti sa medzi providermi líšia — napríklad Bitbucket tu nemá issues, tagy ani releasy. Volanie, ktoré provider nepodporuje, vyhodí FeatureNotSupportedException; ak sa chcete rozhodovať podľa podpory, pozrite sekciu Detekcia funkcií.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/git-for-laravel.md)
