Pitmaster
Git vidē PHP: lasiet un rakstiet repozitorijus, salīdziniet izmaiņas, apvienojiet tās un izmantojiet viedos HTTP, neizsaucot git caur čaulu.
composer require pitmaster/pitmasterJaunākais laidiens 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/oldPraksē
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.
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 featureBez 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.
| Rīks | Piemērots | Atšķirība no Pitmaster |
|---|---|---|
| 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.
Nē. Pamatdarbībās ar repozitoriju netiek izmantots git binārais fails vai FFI. Objektus, atsauces, pakotņu failus, indeksu un viedo HTTP apstrādā PHP.
Jā. Atverot repozitoriju, norādiet Pitmaster::processFreeOptions() vai ['processes' => false]. Tādējādi tiek atspējoti āķi, klonēšana, ienešana, nosūtīšana un SSH procesu transports, bet lokālā lasīšana un rakstīšana joprojām ir pieejama.
Jā, āķi pēc noklusējuma ir ieslēgti un tiek izpildīti ar proc_open(). Lai šim deskriptoram izlaistu skriptus direktorijā .git/hooks, nododiet ['hooks' => false] funkcijai Pitmaster::open(), Pitmaster::init() vai Pitmaster::clone().
Pitmaster::clone(), fetch() un push() izmanto SSH priekš SSH URL un citos gadījumos — viedo HTTP; ja viedā apmaiņa neizdodas, klonēšana un ienešana pārslēdzas uz vienkāršo HTTP. SSH izmanto ssh2 paplašinājumu, ja tas ir ielādēts, un citādi — sistēmas ssh bināro failu.
Jā. Nododiet 'sha256' kā otro argumentu funkcijai Pitmaster::init() vai palaidiet init ar --object-format=sha256. Objektos tad tiek izmantotas 64 rakstzīmju jaucējvērtības.
Nē. Tas atbalsta daļu git komandu, piemēram, log, status, diff, commit, merge, blame un grep. Clone, fetch un push pieejamas tikai PHP API.
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.