Siirry sisältöön

Pitmaster

Git PHP: lue ja kirjoita repositorioita, tee diff-vertailuja ja yhdistä muutoksia sekä käytä älykästä HTTP-protokollaa käynnistämättä git-komentoa.

Pääte
composer require pitmaster/pitmaster

Uusin julkaisu v0.2.11 MIT PHP 8.2+

Käytännössä

Avaa repositorio ja lue tai kirjoita siihen metodikutsuilla tai komentoriviltä.

Repositorion lukeminen kohteesta PHP

Pitmaster::open() paikantaa .git-hakemiston ja palauttaa repositoriokahvan. Kukin tilamerkintä sisältää erillisen tilan indeksille ja työhakemistolle.

Komentoriviltä ./vendor/bin/pitmaster jäljittelee osaa git-komennoista ja toimii Composer-asennuksessa, sillä 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";
}

Ei git-binaaria

Ydintoiminnot suoritetaan ympäristössä PHP 8.2+ ilman git-binaaria tai FFI:tä. Koukut ja SSH-varajärjestely käynnistävät prosesseja, ellet välitä argumenttia ['hooks' => false] tai processFreeOptions().

Luku ja kirjoitus

Irtotiedostot, deltojen purkamisen sisältävät pakettitiedostot, indeksi, viitteet ja asetukset. git lukee sen, mitä Pitmaster kirjoittaa, indeksiversioissa 2 ja 3 sekä irtoviitteissä.

Diff ja yhdistäminen

Myers-, patience- ja histogrammipohjaiset diff-vertailut uudelleennimeämisen tunnistuksella. Kolmisuuntainen yhdistäminen konfliktimerkinnöillä.

Verkkoprotokolla

Kloonaa, noutaa ja lähettää muutoksia älykkäällä HTTP- tai SSH-protokollalla; kloonauksessa ja noudossa on lisäksi käytössä yksinkertaisen HTTP-protokollan varajärjestely. Protokollan v2 on käytettävissä alemman tason asiakasohjelmien kautta.

Git-toiminnot

lisää, vahvista, tila, muutokset, yhdistä, vaihda haaraa, nollaa, laita jemmaan, poimi yksittäinen muutos, kumoa, järjestä historia uudelleen, tarkastele tekijätietoja, etsi.

CLI

22 git-tyylistä komentoa, kuten init, log, status, diff, add, commit, branch, merge, stash, blame ja grep. Kloonaus, nouto ja lähetys ovat käytettävissä vain kirjaston kautta.

Oraakkelitestattu

761 testitapausta vertaa tuloksia oikeasta gitistä kerättyyn tulosteeseen ja suoritetaan CI:ssä; 605 on tuotu gitin, libgit2:n, go-gitin, isomorphic-gitin, dulwichin ja JGit:n testikokonaisuuksista.

Kattava haku

Blame, grep, bisect, notes ja lokin polkusuodatin ilman git-komennon käynnistämistä.

Miksi Pitmaster

Toimii ilman git-asennusta

Commitit, diff-vertailut, tila ja historia lasketaan ympäristössä PHP, joten voit käsitellä repositorioita myös konteissa ja palvelimilla, joihin git-binaaria ei ole asennettu.

Käsittely ilman prosesseja

Pitmaster::processFreeOptions() poistaa käytöstä koukut, fsmonitor-koukut, kloonauksen, noudon, lähetyksen ja SSH-prosessisiirron. Paikallinen luku ja kirjoitus toimivat edelleen.

Tarkistettu gitiä vasten

Integraatiotestit suoritetaan git-binääriä vasten, ja tukimatriisi laskee, kuinka moni 146-ominaisuuksista 146-alueella on vertailutesteillä varmennettu ilmoitetun yhteensopivuuden laajuudessa.

SHA-1 ja SHA-256

Luo SHA-256-repositorion komennolla Pitmaster::init($path, 'sha256') tai init --object-format=sha256. Pakettitiedostoja voi lukea ja kirjoittaa; commit-graph-, multi-pack index- ja reftable-tiedostoja voi lukea.

Vertailu

Muita tapoja käsitellä Git-repositorioita ympäristössä PHP ja erot, joita Pitmaster tuo mukanaan.

Pitmaster verrattuna muihin työkaluihin
git (komentorivityökalu) Sopii hyvinViitetoteutus, jossa on runsas komentovalikoima sekä korkean tason toimintoihin että sisäisten rakenteiden kattavaan käsittelyyn. Ero kohteeseen PitmasterPitmaster toimii PHP-prosessissa, eivätkä ydintoiminnot käynnistä git-komentoa. Sen CLI jäljittelee vain osaa git-komennoista.
czproject/git-php Sopii hyvinTiivis PHP-API komennoille init, clone, commit, merge, branches, tags ja remotes. Toimii versiossa PHP 8.0 tai uudemmassa ja käyttää asennettua git-asiakasohjelmaa. Ero kohteeseen PitmasterPitmaster ei tarvitse git-asiakasohjelmaa ydintoimintoihin, koska se lukee ja kirjoittaa objektit, pakettitiedostot ja indeksin itse. Se edellyttää versiota PHP 8.2 tai uudempaa.
gitonomy/gitlib Sopii hyvinRepositorion käsittely onnistuu versiosta PHP 8.4 alkaen ilman käännösvaihetta. Se toimii kutsumalla gitiä komentotulkista. Ero kohteeseen PitmasterPitmaster ei käynnistä ydintoiminnoissa komentotulkkikomentoja, ja prosessiton kahva poistaa käytöstä ne osat, jotka käynnistäisivät prosessin.
libgit2 Sopii hyvinSiirrettävä C-toteutus Git-ytimen perusmenetelmistä linkitettävänä kirjastona, sidonnat Ruby-, .NET-, Python-, Node.js-, Rust-kielille ja muille. Ero kohteeseen PitmasterPitmaster on tavallinen PHP-asennus, jossa on mukana Composer; käännettyä kirjastoa tai FFI:tä ei tarvita. Se tuo libgit2:n testiresursseista 63 oraakkelitapausta.

Kysymykset ja vastaukset

Lyhyet vastaukset Pitmaster-dokumentaatiosta.

Aloita aloitusoppaasta ja avaa ensimmäinen repositoriosi komennolla PHP. Käytä sen jälkeen muita ohjeita: API ja CLI.