Liigu sisu juurde

Pitmaster

Git rakenduses PHP: loe ja kirjuta hoidlaid, võrdle, ühenda ja suhtle nutika HTTP kaudu ilma git-i shellist käivitamata.

Terminal
composer require pitmaster/pitmaster

Viimane väljalase v0.2.11 MIT PHP 8.2+

Praktikas

Ava hoidla, seejärel loe ja kirjuta seda meetodikutsungite või shelli kaudu.

Loe hoidlat asukohast PHP

Pitmaster::open() leiab .git kataloogi ja tagastab hoidla käitleja. Igal olekukirjel on indeksi ja tööpuu jaoks eraldi olek.

Shellis jäljendab ./vendor/bin/pitmaster osa giti käskudest ja töötab ka ilma Composer installita, sest 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";
}

Ilma kahendfailita git

Põhitoimingud töötavad PHP 8.2+ keskkonnas ilma git-binaari või FFI-ta. Hook'id ja SSH varuvariant käivitavad protsesse, välja arvatud juhul, kui edastad ['hooks' => false] või processFreeOptions().

Lugemine ja kirjutamine

Pakkimata objektid, delta-lahendusega pakkfailid, indeks, viited ja konfiguratsioon. git loeb seda, mida Pitmaster kirjutab, indeksiversioonide 2 ja 3 ning pakkimata viidete puhul.

Võrdlemine ja ühendamine

Myersi, patience'i ja histogrammi diff'id koos ümbernimetamiste tuvastamisega. Kolmesuunaline ühendamine konfliktimärgenditega.

Võrguprotokoll

Klooni, too ja saada muudatusi nutika HTTP või SSH kaudu; kloonimiseks ja toomiseks on ka rumala HTTP varuvariant. Protokoll v2 on saadaval madalama taseme klientide kaudu.

Git toimingud

lisa, salvesta, olek, erinevus, ühenda, vaheta haru, lähtesta, pane ootele, vali commit, tühista, rakenda muudatused ümber, vaata muudatuste autorit, otsi.

CLI

22 git-stiilis käsku, sealhulgas init, log, status, diff, add, commit, branch, merge, stash, blame ja grep. Kloonimine, toomine ja saatmine on saadaval ainult teegis.

Oraakliga testitud

761 stsenaariumi võrdlevad tulemusi päris git-ist salvestatud väljundiga ja käivituvad CI-s; 605 pärinevad giti enda, libgit2, go-giti, isomorphic-giti, dulwichi ja JGit testikogudest.

Täielik otsing

Blame, grep, bisect, notes ja logi failitee filter ilma git-i shellist käivitamata.

Miks Pitmaster

Töötab ilma giti installita

Commit'id, diff'id, olek ja ajalugu arvutatakse PHP abil, nii et ka git-binaarita konteinerid ja serverid saavad hoidlaid kasutada.

Protsessivabad käitlejad

Pitmaster::processFreeOptions() lülitab välja hook'id, fsmonitor-hook'id, kloonimise, toomise, saatmise ja SSH protsessipõhise transpordi. Kohalik lugemine ja kirjutamine toimib edasi.

Kontrollitud nimega git

Integratsioonitestid käivitatakse git-binaari vastu ning tugimaatriks loeb 146 146 ulatusse kuuluva funktsiooni hulgas oma deklareeritud ühilduvusulatuse piires võrdlusalusega kontrollituks.

SHA-1 ja SHA-256

Loo SHA-256 hoidla käsuga Pitmaster::init($path, 'sha256') või init --object-format=sha256. Pakifailide lugemine ja kirjutamine on toetatud; commit-graafi, mitmikpakettide indeksit ja reftable-faile saab lugeda.

Võrdlus

Muud võimalused PHP kaudu Git hoidlatega töötamiseks ja see, mille poolest Pitmaster erineb.

Pitmaster võrrelduna teiste tööriistadega
git (käsurida) Sobib hästiVõrdlusimplementatsioon rikkaliku käsustikuga, mis hõlmab nii kõrgtaseme toiminguid kui ka täielikku juurdepääsu sisemistele osadele. Erinevus võrreldes Pitmaster-gaPitmaster töötab PHP protsessis ja põhitoimingutes ei käivita git-i. Selle CLI peegeldab vaid osa git-i käskudest.
czproject/git-php Sobib hästiKompaktne PHP API käskudele init, clone, commit, merge, branches, tags ja remotes. Töötab versiooniga PHP 8.0 või uuemaga ning kasutab installitud git-klienti. Erinevus võrreldes Pitmaster-gaPitmaster ei vaja põhitoiminguteks git-klienti, sest loeb ja kirjutab objekte, pakifaile ja indeksit ise. Vajab versiooni PHP 8.2 või uuemat.
gitonomy/gitlib Sobib hästiJuurdepääs hoidlale versiooniga PHP 8.4 või uuemaga ilma midagi kompileerimata. Töötab git-i kestakäskude kaudu. Erinevus võrreldes Pitmaster-gaPitmaster ei käivita põhitoiminguteks kestakäske ning protsessivaba käepide keelab osad, mis muidu protsessi käivitaksid.
libgit2 Sobib hästiPortatiivne C-keelne teostus Git põhimeetoditest lingitava teegina, sidemed Ruby, .NET-i, Pythoni, Node.js, Rust ja teiste jaoks. Erinevus võrreldes Pitmaster-gaPitmaster on lihtne PHP, mis paigaldatakse koos Composer-ga; see ei vaja kompileeritud teeki ega FFI-t. See impordib libgit2 testressurssidest 63 võrdlusstsenaariumi.

Küsimused ja vastused

Lühikesed vastused Pitmaster dokumentatsioonist.

Alusta alustamisjuhendist, et avada oma esimene hoidla rakenduses PHP, seejärel kasuta ülejäänud osa jaoks API ja CLI viiteid.