Pereiti prie turinio

Pitmaster

Git aplinkoje PHP: skaitykite ir įrašykite saugyklas, atlikite diff ir merge, naudokite išmanų HTTP, nekviesdami git per shell.

Terminalas
composer require pitmaster/pitmaster

Naujausia versija v0.2.11 MIT PHP 8.2+

Praktinis pritaikymas

Atidarykite saugyklą, tada skaitykite ir keiskite ją iškviesdami metodus arba naudodami shell.

Skaitykite saugyklą iš PHP

Pitmaster::open() suranda .git katalogą ir grąžina saugyklos nuorodą. Kiekvienas būsenos įrašas atskirai nurodo indeksavimo srities ir darbinio medžio būseną.

Iš shell ./vendor/bin/pitmaster imituoja dalį git komandų ir veikia su Composer dieginiu, nes 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";
}

Nereikia git dvejetainio failo

Pagrindinės operacijos vykdomos naudojant PHP 8.2+ be git dvejetainio failo ar FFI. Kabliukai ir atsarginis SSH paleidžia procesus, nebent perduodate ['hooks' => false] arba processFreeOptions().

Skaitymas ir rašymas

Atskiri objektai, paketo failai su deltos išsprendimu, indeksas, nuorodos ir konfigūracija. git perskaito tai, ką Pitmaster įrašo, kai naudojamos 2 ir 3 versijų indeksai bei atskiros nuorodos.

Diff ir merge

Myers, patience ir histogram diff algoritmai su pervadinimų aptikimu. Trijų krypčių sujungimas su konfliktų žymomis.

Tinklo protokolas

Klonuokite, gaukite ir siųskite naudodami išmanųjį HTTP arba SSH, o klonavimui ir gavimui prireikus naudokite paprastąjį HTTP. v2 protokolas prieinamas per žemesnio lygio klientus.

Git operacijos

pridėti, patvirtinti, peržiūrėti būseną, palyginti pakeitimus, sujungti, perjungti šaką, atkurti, atidėti, perkelti pasirinktą pakeitimą, atšaukti, perkelti pakeitimus į kitą šaką, peržiūrėti pakeitimų autorių, ieškoti.

CLI

22 į git panašios komandos, įskaitant init, log, status, diff, add, commit, branch, merge, stash, blame ir grep. Klonavimas, gavimas ir siuntimas prieinami tik bibliotekoje.

Patikrinta su Oracle

761 scenarijų lygina rezultatus su tikro git išvestimi ir vykdomi CI aplinkoje; 605 paimti iš pačios git, libgit2, go-git, isomorphic-git, dulwich ir JGit testų rinkinių.

Išsami paieška

Blame, grep, bisect, notes ir žurnalo kelio filtras – be git paleidimo per shell.

Kodėl Pitmaster

Veikia be įdiegto git

Pateiktys, skirtumai, būsena ir istorija apskaičiuojami PHP, todėl su saugyklomis galima dirbti ir konteineriuose bei prieglobos aplinkose, kuriose nėra git programos.

Procesų nepaleidžiančios nuorodos

Pitmaster::processFreeOptions() išjungia kabliukus, fsmonitor kabliukus, klonavimą, gavimą, siuntimą ir SSH procesų transportą. Vietinis skaitymas ir rašymas toliau veikia.

Patikrinta su git

Integravimo testai vykdomi su git programa, o palaikymo matrica nurodo, kad oracle testais patvirtinta 146 iš 146 į aprėptį patenkančių funkcijų, laikantis joje apibrėžtos suderinamumo aprėpties.

SHA-1 ir SHA-256

Sukurkite SHA-256 saugyklą naudodami Pitmaster::init($path, 'sha256') arba init --object-format=sha256. Pakuočių failai skaitomi ir įrašomi; commit-graph, multi-pack index ir reftable failus galima skaityti.

Palyginimas su

Kiti būdai dirbti su Git saugyklomis iš PHP ir kuo skiriasi Pitmaster.

Pitmaster palyginimas su kitais įrankiais
git (komandinė eilutė) Stipriosios pusėsEtaloninė realizacija su gausiu komandų rinkiniu, apimančiu tiek aukšto lygio operacijas, tiek visapusišką prieigą prie vidinių komponentų. Skirtumas nuo PitmasterPitmaster veikia PHP procese, o pagrindinės operacijos nepaleidžia git per shell. Jos CLI imituoja tik dalį git komandų.
czproject/git-php Stipriosios pusėsKompaktiškas PHP API, skirtas init, clone, commit, merge, šakoms, žymoms ir nuotolinėms saugykloms. Veikia su PHP 8.0 arba naujesne versija ir naudoja įdiegtą git klientą. Skirtumas nuo PitmasterPagrindinėms operacijoms Pitmaster nereikia git kliento, nes pati skaito ir įrašo objektus, pakuočių failus bei indeksą. Reikalinga PHP 8.2 arba naujesnė versija.
gitonomy/gitlib Stipriosios pusėsPrieiga prie saugyklų naudojant PHP 8.4 arba naujesnę versiją; nieko nereikia kompiliuoti. Veikia vykdydama git komandas per shell. Skirtumas nuo PitmasterPitmaster pagrindinėms operacijoms nevykdo shell komandų, o procesų nepaleidžianti nuoroda išjungia funkcijas, kurios paleistų procesą.
libgit2 Stipriosios pusėsPernešama C realizacija, įgyvendinanti pagrindinius Git metodus kaip susiejama biblioteka su sąsajomis, skirtomis Ruby, .NET, Python, Node.js, Rust ir kitoms kalboms. Skirtumas nuo PitmasterPitmaster yra paprastas PHP, įdiegiamas su Composer; nereikia kompiliuotos bibliotekos ar FFI. Ji importuoja 63 oracle scenarijus iš libgit2 testų išteklių.

Klausimai ir atsakymai

Trumpi atsakymai iš Pitmaster dokumentacijos.

Pradėkite nuo darbo pradžios vadovo: jame sužinosite, kaip atidaryti pirmąją saugyklą iš PHP, o vėliau naudokitės likusia informacija, pateikta API ir CLI nuorodose.