Pāriet uz saturu

Pitmaster

Git vidē PHP: lasiet un rakstiet repozitorijus, salīdziniet izmaiņas, apvienojiet tās un izmantojiet viedos HTTP, neizsaucot git caur čaulu.

Terminālis
composer require pitmaster/pitmaster

Jaunākais laidiens v0.2.11 MIT PHP 8.2+

Praksē

Atveriet repozitoriju un pēc tam lasiet un rakstiet tajā, izmantojot metožu izsaukumus vai čaulu.

Lasiet repozitoriju no PHP

Pitmaster::open() atrod .git direktoriju un atgriež repozitorija deskriptoru. Katram statusa ierakstam ir atsevišķs stāvoklis indeksam un darba kokam.

Čaulā ./vendor/bin/pitmaster atbalsta daļu git komandu un darbojas uzreiz pēc Composer instalēšanas, jo 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";
}

Bez git binārā faila

Pamatdarbības darbojas ar PHP 8.2+ bez git binārā faila un FFI. Āķi un SSH rezerves mehānisms palaiž procesus, ja vien nenorādāt ['hooks' => false] vai processFreeOptions().

Lasīšana un rakstīšana

Nesaspiesti objekti, pakotņu faili ar delta izšķiršanu, indekss, atsauces un konfigurācija. git lasa to, ko Pitmaster raksta indeksa 2. un 3. versijā, kā arī nesaspiestās atsauces.

Salīdzināšana un apvienošana

Myers, patience un histogrammas diff ar pārdēvēšanas noteikšanu. Trīspusēja apvienošana ar konfliktu marķieriem.

Tīkla protokols

Klonējiet, ienesiet un nosūtiet izmaiņas, izmantojot viedo HTTP vai SSH; klonēšanai un ienešanai pieejams arī vienkāršais HTTP rezerves mehānisms. Zemāka līmeņa klienti atbalsta protokolu v2.

Git darbības

pievienot, fiksēt, skatīt statusu un atšķirības, apvienot, pārslēgties, atiestatīt, atlikt, atlasīt izmaiņas, atsaukt, pārkārtot, noteikt autoru, meklēt.

CLI

22 git stila komandas, tostarp init, log, status, diff, add, commit, branch, merge, stash, blame un grep. Clone, fetch un push pieejamas tikai kā bibliotēkas funkcijas.

Pārbaudīts ar orākulu

761 scenārijos rezultātus salīdzina ar reāla git izvadēm un palaiž CI vidē; 605 nāk no paša git, libgit2, go-git, isomorphic-git, dulwich un JGit testu kopām.

Pilna meklēšana

Blame, grep, bisect, notes un žurnāla ceļa filtrs, neizsaucot git caur čaulu.

Kāpēc Pitmaster

Darbojas bez git instalēšanas

Komitējumi, atšķirības, statuss un vēsture tiek aprēķināti PHP, tāpēc repozitorijus var izmantot arī konteineros un serveros bez git binārā faila.

Deskriptori bez procesu palaišanas

Pitmaster::processFreeOptions() izslēdz āķus, fsmonitor āķus, klonēšanu, ienešanu, nosūtīšanu un SSH procesu transportu. Lokālā lasīšana un rakstīšana joprojām darbojas.

Pārbaudīts pret git

Integrācijas testi tiek izpildīti pret git bināro failu, un atbalsta matricā ir uzskaitīts, cik no 146 tvērumā iekļautajām funkcijām (146) ir pārbaudītas ar orākulu deklarētajā saderības tvērumā.

SHA-1 un SHA-256

Izveidojiet SHA-256 repozitoriju ar Pitmaster::init($path, 'sha256') vai init --object-format=sha256. Pakotņu failus var lasīt un rakstīt; commit-graph, multi-pack index un reftable failus var lasīt.

Salīdzinājums ar

Citi veidi, kā strādāt ar Git repozitorijiem no PHP, un ar ko atšķiras Pitmaster.

Pitmaster salīdzinājumā ar citiem rīkiem
git (komandrinda) PiemērotsAtsauces implementācija ar plašu komandu klāstu, kas aptver gan augsta līmeņa darbības, gan pilnu piekļuvi iekšējām detaļām. Atšķirība no PitmasterPitmaster darbojas PHP procesā, un pamatdarbības neizsauc git caur čaulu. Tā CLI atbalsta tikai daļu git komandu.
czproject/git-php PiemērotsKompakta PHP API inicializēšanai, klonēšanai, komitēšanai, apvienošanai, zaru, birku un attālo repozitoriju pārvaldībai. Darbojas ar PHP 8.0 vai jaunāku versiju un izmanto instalēto git klientu. Atšķirība no PitmasterPitmaster pamatdarbībām nav nepieciešams git klients, jo tā pati nolasa un raksta objektus, pakotņu failus un indeksu. Nepieciešama PHP 8.2 vai jaunāka versija.
gitonomy/gitlib PiemērotsPiekļuve repozitorijiem no PHP 8.4 vai jaunākas versijas bez kompilēšanas. Darbībām tiek izmantoti čaulas izsaukumi uz git. Atšķirība no PitmasterPitmaster pamatdarbībām neveic čaulas izsaukumus, un deskriptors bez procesu palaišanas atspējo daļas, kas citādi palaistu procesu.
libgit2 PiemērotsPārnēsājama Git pamatmetožu implementācija C valodā kā saistāma bibliotēka ar piesaistēm Ruby, .NET, Python, Node.js, Rust un citām valodām. Atšķirība no PitmasterPitmaster ir vienkāršs PHP, ko instalē ar Composer; nav nepieciešama kompilēta bibliotēka vai FFI. No libgit2 testa resursiem importēti 63 orākula scenāriji.

Jautājumi un atbildes

Īsas atbildes no Pitmaster dokumentācijas.

Sāciet ar darba sākšanas pamācību, lai atvērtu savu pirmo repozitoriju no PHP, pēc tam izmantojiet API un CLI atsauces rokasgrāmatas pārējām vajadzībām.