Pitmaster
Git rakenduses PHP: loe ja kirjuta hoidlaid, võrdle, ühenda ja suhtle nutika HTTP kaudu ilma git-i shellist käivitamata.
composer require pitmaster/pitmasterViimane väljalase v0.2.11 MIT PHP 8.2+
# List all branches (current marked with *)
./bin/pitmaster branch
# Create a new branch from HEAD
./bin/pitmaster branch feature/new-thing
# Delete a branch
./bin/pitmaster branch -d feature/old
./bin/pitmaster branch -D feature/oldPraktikas
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.
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";
}./vendor/bin/pitmaster log
./vendor/bin/pitmaster status
./vendor/bin/pitmaster diff
./vendor/bin/pitmaster show HEAD
./vendor/bin/pitmaster add file.txt
./vendor/bin/pitmaster commit -m "message"
./vendor/bin/pitmaster branch feature
./vendor/bin/pitmaster checkout feature
./vendor/bin/pitmaster merge featureIlma 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.
| Tööriist | Sobib hästi | Erinevus võrreldes Pitmaster-ga |
|---|---|---|
| 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. |
Allikad, märgitud
Küsimused ja vastused
Lühikesed vastused Pitmaster dokumentatsioonist.
Ei. Hoidla põhitoimingud ei kasuta git-binaari ega FFI-t. Objekte, viiteid, pakifaile, indeksit ja nutikat HTTP käsitletakse PHP-s.
Jah. Anna hoidla avamisel parameeter Pitmaster::processFreeOptions() või ['processes' => false]. Siis keelatakse hook'id, clone, fetch, push ja SSH-i protsessitransport, kuid kohalik lugemine ja kirjutamine jäävad võimalikuks.
Jah, hook'id on vaikimisi lubatud ja käivitatakse proc_open() kaudu. Anna Pitmaster::open()-le, Pitmaster::init()-le või Pitmaster::clone()-le ['hooks' => false], et jätta selle käepideme puhul .git/hooks-is olevad skriptid vahele.
Pitmaster::clone(), fetch() ja push() kasutavad SSH-i SSH URL-ide jaoks ja muul juhul nutikat HTTP-i; kui nutikas vahetus nurjub, kasutavad clone ja fetch varuvariandina lihtsat HTTP-i. SSH kasutab laaditud ssh2 laiendust, kui see on saadaval, muul juhul süsteemi ssh-binaari.
Jah. Anna käsule Pitmaster::init() teise argumendina 'sha256' või käivita init valikuga --object-format=sha256. Objektide räside pikkus on siis 64 märki.
Ei. See peegeldab osa git-i käskudest, näiteks log, status, diff, commit, merge, blame ja grep. Clone, fetch ja push on saadaval ainult PHP API kaudu.
Alusta alustamisjuhendist, et avada oma esimene hoidla rakenduses PHP, seejärel kasuta ülejäänud osa jaoks API ja CLI viiteid.