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.
composer require pitmaster/pitmasterUusin julkaisu 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/oldKä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.
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 featureEi 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.
| Työkalu | Sopii hyvin | Ero kohteeseen Pitmaster |
|---|---|---|
| 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. |
Lähteet, valittu
Kysymykset ja vastaukset
Lyhyet vastaukset Pitmaster-dokumentaatiosta.
Ei. Repositorion ydintoiminnot eivät käytä git-binaaria tai FFI:tä. Objektit, viitteet, pakettitiedostot, indeksi ja älykäs HTTP käsitellään ympäristössä PHP.
Kyllä. Välitä asetukseksi Pitmaster::processFreeOptions() tai ['processes' => false], kun avaat repositorion. Koukut, kloonaus, nouto, lähetys ja SSH-prosessisiirto poistetaan tällöin käytöstä, mutta paikallinen luku ja kirjoitus ovat edelleen käytettävissä.
Kyllä, koukut ovat oletusarvoisesti käytössä ja ne suoritetaan komennolla proc_open(). Välitä asetukseksi ['hooks' => false] komennoille Pitmaster::open(), Pitmaster::init() tai Pitmaster::clone(), jotta kyseisen kahvan .git/hooks-komentosarjoja ei suoriteta.
Pitmaster::clone(), fetch() ja push() käyttävät SSH-protokollaa SSH-URL-osoitteille ja muuten älykästä HTTP-protokollaa. Jos älykäs tiedonsiirto epäonnistuu, kloonaus ja nouto käyttävät yksinkertaista HTTP-protokollaa. SSH käyttää ssh2-laajennusta, jos se on ladattu, ja muussa tapauksessa järjestelmän ssh-binaaria.
Kyllä. Välitä 'sha256' toisena argumenttina komennolle Pitmaster::init() tai suorita init komennolla --object-format=sha256. Objektit käyttävät tällöin 64-merkkisiä tiivisteitä.
Ei. Se jäljittelee osaa git-komennoista, kuten log, status, diff, commit, merge, blame ja grep. Kloonaus, nouto ja lähetys ovat käytettävissä vain PHP APIn kautta.
Aloita aloitusoppaasta ja avaa ensimmäinen repositoriosi komennolla PHP. Käytä sen jälkeen muita ohjeita: API ja CLI.