
# Introducere
Pitmaster este o bibliotecă pură PHP care citește și scrie nativ depozite Git. Operațiile de bază asupra depozitului nu apelează executabilul `git` din shell și nu folosesc FFI. Modelul de obiecte Git, formatul fișierelor pack, formatul indexului și transportul smart HTTP sunt implementate în PHP.

## De ce există Pitmaster

Aplicațiile PHP care interacționează cu depozite Git apelează de obicei executabilul `git` din shell. Funcționează, dar creează o dependență strictă de instalarea `git`, introduce probleme de securitate legate de `exec()` și `proc_open()` și îngreunează implementarea aplicației în medii restricționate (containere fără git, găzduire partajată, funcții serverless).

Pitmaster elimină dependența de `git` pentru operațiile de bază asupra depozitului. Aplicația dvs. PHP poate citi istoricul commit-urilor, crea commit-uri, calcula diferențe, verifica starea și trimite modificări către depozite la distanță prin smart HTTP, folosind numai funcțiile integrate ale PHP. Hook-urile și transportul SSH sunt excepții: ambele pornesc procese și pot fi dezactivate per instanță de depozit (consultați [Hook-uri](https://pitmaster.inline0.dev/ro/docs/advanced/hooks)).

## Ce face

- Citește și scrie obiecte libere (blob, tree, commit, tag)
- Citește fișiere pack și rezolvă lanțuri delta (OFS_DELTA și REF_DELTA)
- Scrie fișiere pack pentru operațiile de rețea
- Citește și scrie indexul/zona de staging (formatele v2, v3, v4)
- Citește și scrie referințe (ramuri, tag-uri, HEAD, packed-refs, reftable)
- Calculează diferențe (algoritmii Myers, Patience, Histogram și Minimal) în formatul unificat al git
- Efectuează îmbinări în trei direcții cu detectarea conflictelor
- Parcurge grafuri de commit-uri (jurnal, ascendență, bază de îmbinare)
- Folosește protocolul Git smart HTTP (clonare, preluare, trimitere)
- Acceptă worktree-uri, submodule, stash, hook-uri și Git LFS

## Cerințe

- PHP 8.2 sau o versiune ulterioară
- Extensia `zlib` (integrată în aproape toate instalările PHP)
- Extensia `json`
- Extensia `mbstring` (declarată în `composer.json`, deci Composer o solicită la instalare)
- Extensia `ctype` (folosită pentru validarea hash-urilor obiectelor; activată în majoritatea build-urilor PHP, dar nedeclarată în `composer.json`)

Operațiile de bază asupra depozitului nu necesită executabilul `git`. Funcțiile opționale pot necesita capabilități suplimentare ale mediului de execuție: executarea hook-urilor folosește `proc_open()`, iar transportul SSH folosește `ext-ssh2` atunci când este încărcat; în caz contrar, pornește executabilul de sistem `ssh` prin `proc_open()`.

## Exemplu rapid

```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');
```

Începeți cu [Noțiuni introductive](https://pitmaster.inline0.dev/ro/docs/getting-started), apoi consultați [API](https://pitmaster.inline0.dev/ro/docs/api), [CLI](https://pitmaster.inline0.dev/ro/docs/cli) și [Operații](https://pitmaster.inline0.dev/ro/docs/operations/read) pentru restul funcționalităților. [Testare](https://pitmaster.inline0.dev/ro/docs/testing) explică modul în care Pitmaster este verificat față de `git`.
