
# Giriş
Pitmaster, Git depolarını yerel olarak okuyup yazan saf bir PHP kütüphanesidir. Temel depo işlemleri `git` ikili dosyasını harici komut olarak çalıştırmaz ve FFI kullanmaz. Git nesne modeli, pack dosyası biçimi, indeks biçimi ve akıllı HTTP aktarımı PHP ile uygulanmıştır.

## Pitmaster neden var

Git depolarıyla etkileşime giren PHP uygulamaları genellikle `git` ikili dosyasını harici komut olarak çalıştırır. Bu yöntem işe yarar, ancak `git`'ün kurulu olmasını zorunlu kılar, `exec()` ve `proc_open()` çevresinde güvenlik sorunları yaratır ve uygulamanın kısıtlı ortamlara (git içermeyen kapsayıcılar, paylaşımlı barındırma, sunucusuz işlevler) dağıtımını zorlaştırır.

Pitmaster, temel depo işlemleri için `git` bağımlılığını ortadan kaldırır. PHP uygulamanız, yalnızca PHP'ün yerleşik işlevlerini kullanarak commit geçmişini okuyabilir, commit oluşturabilir, farkları hesaplayabilir, durumu denetleyebilir ve akıllı HTTP üzerinden uzak depolara push yapabilir. Kancalar ve SSH aktarımı istisnadır: ikisi de süreç başlatır ve her depo tanıtıcısı için devre dışı bırakılabilir ([Kancalar](https://pitmaster.inline0.dev/tr/docs/advanced/hooks) bölümüne bakın).

## Ne yapar?

- Gevşek nesneleri (blob, tree, commit, tag) okur ve yazar
- Pack dosyalarını okur ve delta zincirlerini çözümler (OFS_DELTA ve REF_DELTA)
- Ağ işlemleri için pack dosyaları yazar
- İndeksi/evreleme alanını okur ve yazar (v2, v3, v4 biçimleri)
- Ref'leri okur ve yazar (dallar, etiketler, HEAD, packed-refs, reftable)
- git'nin birleşik biçiminde farkları hesaplar (Myers, Patience, Histogram ve Minimal algoritmaları)
- Çakışma algılamalı üç yönlü birleştirme yapar
- Commit grafiklerini dolaşır (log, ata ilişkisi, birleştirme tabanı)
- Git akıllı HTTP protokolünü kullanır (clone, fetch, push)
- Çalışma ağaçlarını, alt modülleri, stash'i, kancaları ve Git LFS destekler

## Gereksinimler

- PHP 8.2 veya üzeri
- `zlib` uzantısı (neredeyse tüm PHP kurulumlarında yerleşik)
- `json` uzantısı
- `mbstring` uzantısı (`composer.json` içinde bildirilmiştir; bu nedenle Composer kurulum sırasında bunu gerektirir)
- `ctype` uzantısı (nesne hash'lerini doğrulamak için kullanılır; çoğu PHP derlemesinde etkindir, ancak `composer.json` içinde bildirilmemiştir)

Temel depo işlemleri `git` ikili dosyasını gerektirmez. İsteğe bağlı özellikler ek çalışma zamanı yetenekleri gerektirebilir: kanca yürütme `proc_open()` kullanır; SSH aktarımıysa yüklüyse `ext-ssh2` kullanır, aksi durumda sistemin `ssh` ikili dosyasını `proc_open()` üzerinden başlatır.

## Hızlı örnek

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

// Create a commit
$repo->add('src/Feature.php');
$commitId = $repo->commit('Add new feature');
```

[Başlarken](https://pitmaster.inline0.dev/tr/docs/getting-started) ile başlayın; ardından diğer konular için [API](https://pitmaster.inline0.dev/tr/docs/api), [CLI](https://pitmaster.inline0.dev/tr/docs/cli) ve [İşlemler](https://pitmaster.inline0.dev/tr/docs/operations/read) bölümlerine bakın. [Testler](https://pitmaster.inline0.dev/tr/docs/testing) bölümü, Pitmaster'ün `git` karşısında nasıl denetlendiğini açıklar.
