İçeriğe geç

Pitmaster

PHP içinde Git: depoları okuyup yazın, diff alın, birleştirin ve kabuk komutu çalıştırmadan akıllı HTTP üzerinden iletişim kurun: git kullanmayın.

Terminal
composer require pitmaster/pitmaster

En son sürüm v0.2.11 MIT PHP 8.2+

Uygulamada

Bir depoyu açın, ardından yöntem çağrılarıyla veya kabuktan okuyup yazın.

PHP üzerinden depo okuma

Pitmaster::open(), .git dizinini bulur ve bir depo tanıtıcısı döndürür. Her durum girdisi, dizin ve çalışma ağacı için ayrı bir durum taşır.

Kabuktan ./vendor/bin/pitmaster, git komutlarının bir alt kümesini yansıtır ve 0.2.11 olduğundan Composer kurulumuyla çalışır.

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";
}

git ikilisi yok

Temel işlemler PHP 8.2+ üzerinde, git ikilisi veya FFI olmadan çalışır. Kancalar ve SSH geri dönüşü, ['hooks' => false] veya processFreeOptions() iletilmediğinde süreç başlatır.

Okuma ve Yazma

Gevşek nesneler, delta çözümlemeli paket dosyaları, dizin, başvurular ve yapılandırma. git, dizin 2 ve 3 sürümleri ile gevşek başvurular için Pitmaster tarafından yazılanları okur.

Diff ve Birleştirme

Yeniden adlandırma algılamalı Myers, patience ve histogram diff'leri. Çakışma işaretleyicili üç yönlü birleştirme.

Ağ Protokolü

Akıllı HTTP veya SSH üzerinden klonlama, getirme ve gönderme; klonlama ve getirme için geri dönüş olarak basit HTTP kullanılır. Protokol v2, alt düzey istemciler aracılığıyla kullanılabilir.

Git İşlemleri

ekleme, commit, durum, fark, birleştirme, dal değiştirme, sıfırlama, rafa kaldırma, seçerek taşıma, geri alma, yeniden tabanlama, sorumluluk geçmişi, arama.

CLI

init, log, status, diff, add, commit, branch, merge, stash, blame ve grep dahil 22 git tarzı komut. Clone, fetch ve push yalnızca kitaplıkta kullanılabilir.

Oracle ile Test Edildi

761 senaryosu, sonuçları gerçek git çıktılarıyla karşılaştırır ve CI'da çalışır; 605, git uygulamasının kendi test paketinden, libgit2, go-git, isomorphic-git, dulwich ve JGit kaynaklarından gelir.

Tam Arama

git kabuk komutu çalıştırmadan blame, grep, bisect, notes ve günlük yol filtresi.

Pitmaster neden tercih edilmeli

git kurulumu olmadan çalışır

Commit'ler, diff'ler, durum ve geçmiş PHP içinde hesaplanır; böylece git ikilisi olmayan konteyner ve sunucularda da depolarla çalışılabilir.

Süreç başlatmayan tanıtıcılar

Pitmaster::processFreeOptions(); kancaları, fsmonitor kancalarını, clone, fetch ve push işlemlerini ve SSH süreç aktarımını devre dışı bırakır. Yerel okuma ve yazma işlemleri çalışmaya devam eder.

git ile karşılaştırılarak denetlendi

Entegrasyon testleri git ikili dosyasına karşı çalıştırılır ve destek matrisi, kapsam dahilindeki 146 özellikten 146 tanesinin belirtilen eşdeğerlik kapsamı içinde oracle tarafından doğrulandığını gösterir.

SHA-1 ve SHA-256

Pitmaster::init($path, 'sha256') ile veya init --object-format=sha256 kullanarak bir SHA-256 deposu oluşturun. Pack dosyaları okunup yazılır; commit-graph, multi-pack index ve reftable dosyaları okunabilir.

Karşılaştırma

PHP üzerinden Git depolarıyla çalışmanın diğer yolları ve Pitmaster farkı.

Pitmaster ile diğer araçların karşılaştırması
git (komut satırı) Şu konularda başarılıHem üst düzey işlemleri hem de dahili bileşenlere tam erişimi kapsayan zengin bir komut kümesine sahip referans uygulama. Pitmaster ile farkıPitmaster, PHP sürecinde çalışır ve temel işlemler git için kabuk komutu çalıştırmaz. CLI, yalnızca git komutlarının bir alt kümesini yansıtır.
czproject/git-php Şu konularda başarılıinit, clone, commit, merge, branches, tags ve remotes için kompakt bir PHP API. PHP 8.0 veya üstünde çalışır ve kurulu git istemcisini kullanır. Pitmaster ile farkıPitmaster temel işlemler için git istemcisine ihtiyaç duymaz; nesneleri, paket dosyalarını ve dizini doğrudan okuyup yazar. PHP 8.2 veya üzeri gerekir.
gitonomy/gitlib Şu konularda başarılıDerleme gerektirmeden PHP 8.4 veya üstünden depo erişimi. git için kabuk çağrıları yaparak çalışır. Pitmaster ile farkıPitmaster temel işlemler için kabuk çağrısı yapmaz; süreç başlatmayan bir tanıtıcı, süreç başlatacak bölümleri devre dışı bırakır.
libgit2 Şu konularda başarılıBağlanabilir bir kitaplık olarak sunulan, Git temel yöntemlerinin taşınabilir bir C uygulaması; Ruby, .NET, Python, Node.js, Rust ve diğerleri için bağlamalar içerir. Pitmaster ile farkıPitmaster, Composer ile kurulan, derlenmiş kitaplık veya FFI içermeyen yalın bir PHP uygulamasıdır. Oracle senaryolarının 63'ünü libgit2 test kaynaklarından alır.

Sorular ve yanıtlar

Pitmaster dokümantasyonundan kısa yanıtlar.

İlk deponuzu PHP üzerinden açmak için başlangıç kılavuzunu izleyin; geri kalan konular için API ve CLI başvurularını kullanın.