Přejít k obsahu

Pitmaster

Git v PHP: čtení a zápis repozitářů, diff, merge a komunikace pomocí smart HTTP bez spouštění git v shellu.

Terminál
composer require pitmaster/pitmaster

Nejnovější vydání v0.2.11 MIT PHP 8.2+

V praxi

Otevřete repozitář a pak jej čtěte a zapisujte pomocí volání metod nebo z příkazového řádku.

Čtení repozitáře z PHP

Pitmaster::open() najde adresář .git a vrátí odkaz na repozitář. Každá položka stavu má oddělený stav pro index a pracovní strom.

Z příkazového řádku ./vendor/bin/pitmaster napodobuje podmnožinu příkazů git a funguje z instalace Composer, protož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árky git

Základní operace běží v PHP 8.2+ bez binárky git nebo FFI. Hooky a náhradní řešení SSH spouštějí procesy, pokud nepředáte ['hooks' => false] nebo processFreeOptions().

Čtení a zápis

Volné objekty, pack soubory s rozbalením delt, index, reference a konfigurace. git čte to, co Pitmaster zapisuje pro verze indexu 2 a 3 a volné reference.

Diff a merge

Diff algoritmy Myers, patience a histogram s detekcí přejmenování. Třícestné sloučení se značkami konfliktů.

Síťový protokol

Klonování, načítání a odesílání přes smart HTTP nebo SSH, s náhradou v podobě dumb HTTP pro klonování a načítání. Protokol v2 je dostupný prostřednictvím nízkoúrovňových klientů.

Operace Git

přidat, potvrdit, stav, rozdíly, sloučit, přepnout, vrátit změny, odložit, vybrat změnu, vrátit commit, změnit základ, zjistit autora, hledat.

CLI

22 příkazů ve stylu git, včetně init, log, status, diff, add, commit, branch, merge, stash, blame a grep. Klonování, načítání a odesílání jsou dostupné pouze v knihovně.

Ověřeno pomocí Oracle

Scénáře 761 porovnávají výsledky s výstupem zachyceným ze skutečného git a spouštějí se v CI; 605 pocházejí z testovacích sad samotného git, libgit2, go-git, isomorphic-git, dulwich a JGit.

Kompletní vyhledávání

Blame, grep, bisect, poznámky a filtr cest v logu bez spouštění git v shellu.

Proč Pitmaster

Funguje bez instalace git

Commity, rozdíly, stav a historie se počítají v PHP, takže s repozitáři lze pracovat i v kontejnerech a na hostitelích bez binárky git.

Odkazy bez procesů

Pitmaster::processFreeOptions() vypíná hooky, hooky fsmonitor, klonování, načítání, odesílání a procesní přenos SSH. Místní čtení a zápis dál fungují.

Ověřeno proti git

Integrační testy se spouštějí proti binárce git a matice podpory uvádí 146 z 146 funkcí v rozsahu jako ověřené pomocí Oracle v rámci deklarovaného rozsahu shody.

SHA-1 a SHA-256

Vytvořte repozitář SHA-256 pomocí Pitmaster::init($path, 'sha256') nebo příkazu init --object-format=sha256. Pack soubory se čtou i zapisují; soubory commit-graph, multi-pack index a reftable lze číst.

Srovnání

Další možnosti práce s repozitáři Git z PHP a rozdíly oproti Pitmaster.

Pitmaster ve srovnání s ostatními nástroji
git (příkazový řádek) Vhodné proReferenční implementace s rozsáhlou sadou příkazů, která pokrývá vysokoúrovňové operace i plný přístup k interním částem. Rozdíl oproti PitmasterPitmaster běží uvnitř procesu PHP a základní operace nespouštějí git v shellu. Jeho CLI napodobuje pouze podmnožinu příkazů git.
czproject/git-php Vhodné proKompaktní PHP API pro init, klonování, commit, merge, větve, tagy a vzdálené repozitáře. Běží na PHP 8.0 nebo novějším a ovládá nainstalovaného klienta git. Rozdíl oproti PitmasterPitmaster pro základní operace nepotřebuje klienta git, protože samo čte a zapisuje objekty, pack soubory a index. Vyžaduje PHP 8.2 nebo novější.
gitonomy/gitlib Vhodné proPřístup k repozitáři z PHP 8.4 nebo novějšího bez nutnosti cokoli sestavovat. Funguje voláním git v shellu. Rozdíl oproti PitmasterPitmaster při základních operacích nevolá shell a odkaz bez procesů vypíná části, které by proces spustily.
libgit2 Vhodné proPřenosná implementace základních metod Git v jazyce C jako knihovna pro propojení s programem, s vazbami pro Ruby, .NET, Python, Node.js, Rust a další. Rozdíl oproti PitmasterPitmaster je čistý PHP instalovaný pomocí Composer, bez kompilované knihovny nebo FFI. Z testovacích prostředků libgit2 přebírá 63 scénářů Oracle.

Otázky a odpovědi

Stručné odpovědi z dokumentace Pitmaster.

Začněte průvodcem pro začátek a otevřete svůj první repozitář z PHP, pak se podívejte do referencí API a CLI.