Preskočiť na obsah

Pitmaster

Git v PHP: čítanie a zápis repozitárov, diff, zlúčenie a inteligentná komunikácia cez HTTP bez spúšťania git z príkazového riadka.

Terminál
composer require pitmaster/pitmaster

Najnovšie vydanie v0.2.11 MIT PHP 8.2+

V praxi

Otvorte repozitár, potom ho čítajte a zapisujte pomocou volaní metód alebo z shellu.

Čítanie repozitára z PHP

Pitmaster::open() nájde adresár .git a vráti objekt repozitára. Každá položka stavu obsahuje samostatný stav indexu a pracovného stromu.

./vendor/bin/pitmaster zo shellu napodobňuje podmnožinu príkazov git a funguje aj pri inštalácii Composer, keďže 0.2.11.

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";
}

Bez binárneho súboru git

Základné operácie bežia v PHP 8.2+ bez binárneho súboru git alebo FFI. Hooky a záložná možnosť SSH spúšťajú procesy, pokiaľ neodovzdáte ['hooks' => false] alebo processFreeOptions().

Čítanie a zápis

Voľné objekty, pack súbory s rozlíšením delta, index, odkazy a konfigurácia. git číta to, čo Pitmaster zapisuje, pre verzie indexu 2 a 3 a voľné odkazy.

Diff a zlúčenie

Diffy Myers, patience a histogram s detekciou premenovaní. Trojcestné zlúčenie so značkami konfliktov.

Sieťový protokol

Klonujte, načítavajte a odosielajte zmeny cez inteligentné HTTP alebo SSH, s náhradným hlúpym HTTP na klonovanie a načítavanie. Protokol v2 je dostupný cez klientov nižšej úrovne.

Operácie Git

pridať, potvrdiť, zobraziť stav, zobraziť rozdiely, zlúčiť, prejsť na inú vetvu, obnoviť, odložiť zmeny, vybrať commit, vrátiť zmeny, prebaseovať, zobraziť pôvodcu, vyhľadávať.

CLI

22 príkazov v štýle git vrátane init, log, status, diff, add, commit, branch, merge, stash, blame a grep. Clone, fetch a push sú dostupné iba v knižnici.

Testované podľa referenčnej implementácie

Scenáre 761 porovnávajú výsledky s výstupom zachyteným zo skutočného git a spúšťajú sa v CI; 605 pochádzajú z testovacích súborov samotného git, libgit2, go-git, isomorphic-git, dulwich a JGit.

Úplné vyhľadávanie

Blame, grep, bisect, notes a filter ciest v logu bez spúšťania git v shelli.

Prečo Pitmaster

Funguje bez inštalácie git

Commity, rozdiely, stav a história sa počítajú v PHP, takže kontajnery a hostiteľské systémy bez binárneho súboru git môžu stále pracovať s repozitármi.

Objekty bez procesov

Pitmaster::processFreeOptions() vypne hooky, hooky fsmonitor, clone, fetch, push a prenos cez proces SSH. Lokálne čítanie a zapisovanie zostáva funkčné.

Overené oproti git

Integračné testy sa spúšťajú oproti binárnemu súboru git a matica podpory počíta 146 funkcií 146 v rozsahu ako overené podľa referenčnej implementácie, v rámci deklarovaného rozsahu zhody.

SHA-1 a SHA-256

Vytvorte repozitár SHA-256 pomocou Pitmaster::init($path, 'sha256') alebo príkazu init --object-format=sha256. Súbory pack sa čítajú aj zapisujú; súbory commit-graph, multi-pack index a reftable možno čítať.

V porovnaní s

Ďalšie spôsoby práce s repozitármi Git z PHP a rozdiely oproti Pitmaster.

Pitmaster v porovnaní s inými nástrojmi
git (príkazový riadok) V čom vynikáReferenčná implementácia s bohatou sadou príkazov, ktorá pokrýva operácie vyššej úrovne aj plný prístup k interným častiam. Rozdiel oproti PitmasterPitmaster beží v procese PHP a základné operácie nespúšťajú git v shelli. Jeho CLI napodobňuje iba podmnožinu príkazov git.
czproject/git-php V čom vynikáKompaktný PHP API na init, clone, commit, merge, vetvy, značky a vzdialené repozitáre. Funguje na PHP 8.0 alebo novšom a používa nainštalovaného klienta git. Rozdiel oproti PitmasterPitmaster pri základných operáciách nepotrebuje klienta git, pretože objekty, súbory pack a index číta aj zapisuje samostatne. Vyžaduje PHP 8.2 alebo novší.
gitonomy/gitlib V čom vynikáPrístup k repozitáru z PHP 8.4 alebo novšieho bez potreby čokoľvek zostavovať. Funguje pomocou volaní git cez shell. Rozdiel oproti PitmasterPitmaster pri základných operáciách nevolá shell a objekt bez procesov vypne časti, ktoré by spúšťali proces.
libgit2 V čom vynikáPrenositeľná implementácia základných metód Git v jazyku C ako prepojiteľná knižnica s väzbami pre Ruby, .NET, Python, Node.js, Rust a ďalšie jazyky. Rozdiel oproti PitmasterPitmaster je čisté PHP nainštalované pomocou Composer, bez skompilovanej knižnice či FFI. Zo zdrojov testov libgit2 preberá 63 scenárov referenčnej implementácie.

Otázky a odpovede

Stručné odpovede z dokumentácie Pitmaster.

Začnite príručkou pre začiatočníkov a otvorte svoj prvý repozitár z PHP. Potom si pozrite referencie API a CLI.