Lewati ke konten

Pitmaster

Git di PHP: membaca dan menulis repositori, melakukan diff dan merge, serta berbicara melalui HTTP cerdas tanpa menjalankan git lewat shell.

Terminal
composer require pitmaster/pitmaster

Rilis terbaru v0.2.11 MIT PHP 8.2+

Dalam praktik

Buka repositori, lalu baca dan tulis dengan pemanggilan metode atau dari shell.

Baca repositori dari PHP

Pitmaster::open() menemukan direktori .git dan mengembalikan handle repositori. Setiap entri status memiliki status terpisah untuk indeks dan pohon kerja.

Dari shell, ./vendor/bin/pitmaster menyediakan sebagian perintah git dan dapat digunakan dengan instalasi Composer karena 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";
}

Tanpa Biner git

Operasi inti berjalan di PHP 8.2+ tanpa biner git atau FFI. Hook dan fallback SSH memulai proses kecuali Anda memberikan ['hooks' => false] atau processFreeOptions().

Baca & Tulis

Objek lepas, berkas pack dengan resolusi delta, indeks, referensi, dan konfigurasi. git membaca apa yang ditulis Pitmaster untuk indeks versi 2 dan 3 serta referensi lepas.

Diff & Merge

Diff Myers, patience, dan histogram dengan deteksi penggantian nama. Merge tiga arah dengan penanda konflik.

Protokol Jaringan

Clone, fetch, dan push melalui HTTP atau SSH cerdas, dengan fallback HTTP biasa untuk clone dan fetch. Protokol v2 tersedia melalui klien tingkat rendah.

Operasi Git

tambah, commit, status, diff, merge, checkout, reset, stash, cherry-pick, revert, rebase, blame, grep.

CLI

22 perintah bergaya git, termasuk init, log, status, diff, add, commit, branch, merge, stash, blame, dan grep. Clone, fetch, dan push hanya tersedia melalui pustaka.

Diuji dengan Oracle

761 skenario membandingkan hasil dengan keluaran yang diambil dari git sungguhan dan dijalankan di CI; 605 berasal dari rangkaian pengujian git sendiri, libgit2, go-git, isomorphic-git, dulwich, dan JGit.

Pencarian Lengkap

Blame, grep, bisect, notes, dan filter jalur log, tanpa menjalankan git lewat shell.

Mengapa Pitmaster

Berjalan tanpa instalasi git

Commit, diff, status, dan riwayat dihitung dalam PHP, sehingga kontainer dan host tanpa biner git tetap dapat bekerja dengan repositori.

Handle tanpa proses

Pitmaster::processFreeOptions() menonaktifkan hook, hook fsmonitor, clone, fetch, push, dan transport proses SSH. Pembacaan dan penulisan lokal tetap berfungsi.

Diperiksa terhadap git

Tes integrasi dijalankan terhadap biner git, dan matriks dukungan menghitung 146 dari 146 fitur yang termasuk dalam cakupan sebagai terverifikasi oracle dalam cakupan paritas yang dinyatakan.

SHA-1 dan SHA-256

Buat repositori SHA-256 dengan Pitmaster::init($path, 'sha256') atau init --object-format=sha256. Berkas pack dibaca dan ditulis; berkas commit-graph, multi-pack index, dan reftable dapat dibaca.

Dibandingkan dengan

Cara lain untuk bekerja dengan repositori Git dari PHP, dan perbedaan Pitmaster.

Pitmaster dibandingkan dengan alat lainnya
git (baris perintah) KeunggulanImplementasi acuan, dengan rangkaian perintah lengkap yang mencakup operasi tingkat tinggi serta akses penuh ke internal. Perbedaan dengan PitmasterPitmaster berjalan di dalam proses PHP dan operasi intinya tidak menjalankan git lewat shell. CLI hanya menyediakan sebagian perintah git.
czproject/git-php KeunggulanPHP API ringkas untuk init, clone, commit, merge, branch, tag, dan remote. Berjalan pada PHP 8.0 atau lebih baru dan menggunakan klien git yang terpasang. Perbedaan dengan PitmasterPitmaster tidak memerlukan klien git untuk operasi inti karena membaca dan menulis objek, berkas pack, dan indeks sendiri. Memerlukan PHP 8.2 atau lebih baru.
gitonomy/gitlib KeunggulanAkses repositori dari PHP 8.4 atau lebih baru tanpa perlu membangun apa pun. Cara kerjanya dengan menjalankan perintah shell ke git. Perbedaan dengan PitmasterPitmaster tidak menjalankan perintah shell untuk operasi inti, dan handle tanpa proses menonaktifkan bagian yang akan memulai proses.
libgit2 KeunggulanImplementasi portabel metode inti Git dalam C sebagai pustaka yang dapat ditautkan, dengan binding untuk Ruby, .NET, Python, Node.js, Rust, dan lainnya. Perbedaan dengan PitmasterPitmaster adalah PHP biasa yang dipasang dengan Composer, tanpa pustaka terkompilasi atau FFI. Sebanyak 63 skenario oraclenya diimpor dari sumber daya pengujian libgit2.

Tanya jawab

Jawaban singkat dari dokumentasi Pitmaster.

Mulailah dengan panduan memulai untuk membuka repositori pertama Anda dari PHP, lalu gunakan referensi API dan CLI untuk selebihnya.