
# Úvod
Pitmaster je čisto implementovaná knižnica PHP, ktorá natívne číta a zapisuje repozitáre Git. Základné operácie s repozitárom nespúšťajú cez shell binárny súbor `git` ani nepoužívajú FFI. Objektový model Git, formát súboru balíka, formát indexu a inteligentný prenos HTTP sú implementované v PHP.

## Prečo existuje Pitmaster

Aplikácie PHP, ktoré pracujú s repozitármi Git, zvyčajne spúšťajú binárny súbor `git` cez shell. Funguje to, ale vytvára pevnú závislosť od nainštalovaného `git`, prináša bezpečnostné riziká súvisiace s `exec()` a `proc_open()` a sťažuje nasadenie aplikácie v obmedzených prostrediach (kontajnery bez git, zdieľaný hosting, bezserverové funkcie).

Pitmaster odstraňuje závislosť od `git` pri základnej práci s repozitárom. Vaša aplikácia PHP môže čítať históriu odovzdaní, vytvárať odovzdania, počítať rozdiely, kontrolovať stav a odosielať zmeny do vzdialených repozitárov cez inteligentný HTTP iba pomocou vstavaných funkcií PHP. Výnimkou sú hooky a prenos SSH: oba spúšťajú procesy a oba možno vypnúť pre konkrétny objekt repozitára (pozrite si [Hooky](https://pitmaster.inline0.dev/sk/docs/advanced/hooks)).

## Čo dokáže

- Číta a zapisuje voľné objekty (blob, strom, odovzdanie, značka)
- Číta súbory balíkov a rieši reťazce delta (OFS_DELTA a REF_DELTA)
- Zapisuje súbory balíkov pre sieťové operácie
- Číta a zapisuje index/pracovnú oblasť prípravy (formáty v2, v3, v4)
- Číta a zapisuje odkazy (vetvy, značky, HEAD, packed-refs, reftable)
- Počíta rozdiely (algoritmy Myers, Patience, Histogram a Minimal) v zjednotenom formáte git
- Vykonáva trojcestné zlučovania s detekciou konfliktov
- Prechádza grafy odovzdaní (záznam, pôvodnosť, základ zlúčenia)
- Podporuje inteligentný protokol Git HTTP (klonovanie, načítanie, odosielanie)
- Podporuje pracovné stromy, submoduly, odložené zmeny, hooky a Git LFS

## Čo vyžaduje

- PHP 8.2 alebo novší
- Rozšírenie `zlib` (vstavané prakticky vo všetkých inštaláciách PHP)
- Rozšírenie `json`
- Rozšírenie `mbstring` (deklarované v `composer.json`, takže Composer ho vyžaduje pri inštalácii)
- Rozšírenie `ctype` (používa sa na overovanie hashov objektov; povolené vo väčšine zostavení PHP, no nie je deklarované v `composer.json`)

Základné operácie s repozitárom nevyžadujú binárny súbor `git`. Voliteľné funkcie môžu vyžadovať ďalšie možnosti behu: spúšťanie hookov používa `proc_open()` a prenos SSH používa `ext-ssh2`, keď je načítané, inak spustí systémový binárny súbor `ssh` prostredníctvom `proc_open()`.

## Rýchly príklad

```php
use Pitmaster\Pitmaster;

$repo = Pitmaster::open('/path/to/project');

// Read the current HEAD commit
$head = $repo->head();
echo $head->message;

// List branches
foreach ($repo->branches() as $branch) {
    echo $branch . "\n";
}

// Check status
foreach ($repo->status() as $entry) {
    echo "{$entry->path}: {$entry->index->value}{$entry->worktree->value}\n";
}

// Create a commit
$repo->add('src/Feature.php');
$commitId = $repo->commit('Add new feature');
```

Začnite stránkou [Začíname](https://pitmaster.inline0.dev/sk/docs/getting-started) a potom si pozrite [API](https://pitmaster.inline0.dev/sk/docs/api), [CLI](https://pitmaster.inline0.dev/sk/docs/cli) a [Operácie](https://pitmaster.inline0.dev/sk/docs/operations/read), kde nájdete opis zvyšku funkcií. Vysvetlenie, ako sa Pitmaster overuje voči `git`, nájdete na stránke [Testovanie](https://pitmaster.inline0.dev/sk/docs/testing).
