انتقل إلى المحتوى

Pitmaster

Git في PHP: قراءة المستودعات وكتابتها، ومقارنة التغييرات ودمجها، والتواصل عبر HTTP الذكي دون استدعاء git من الصدفة.

الطرفية
composer require pitmaster/pitmaster

أحدث إصدار v0.2.11 MIT PHP 8.2+

في التطبيق العملي

افتح مستودعًا، ثم اقرأه واكتب فيه باستخدام استدعاءات الأساليب أو من الصدفة.

قراءة مستودع من PHP

تحدد Pitmaster::open() موقع مجلد .git وتعيد مقبضًا للمستودع. وتحمل كل خانة حالة منفصلة للفهرس وشجرة العمل.

من الصدفة، تحاكي ./vendor/bin/pitmaster مجموعة فرعية من أوامر git وتعمل منذ الإصدار 0.2.11 عند التثبيت باستخدام Composer.

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 ثنائي

تعمل العمليات الأساسية في PHP 8.2+ دون ملف git ثنائي أو FFI. تبدأ الخطافات والبديل الاحتياطي لـ SSH عملياتٍ ما لم تمرّر ['hooks' => false] أو processFreeOptions().

القراءة والكتابة

كائنات منفصلة، وملفات pack مع حلّ الفروق، والفهرس، والمراجع والإعدادات. يقرأ git ما تكتبه Pitmaster لإصداري الفهرس 2 و3 والمراجع المنفصلة.

مقارنة التغييرات والدمج

مقارنات Myers وpatience وhistogram مع اكتشاف إعادة التسمية. ودمج ثلاثي الاتجاهات مع علامات التعارض.

بروتوكول الشبكة

استنسخ واجلب وادفع عبر HTTP الذكي أو SSH، مع بديل HTTP محدود للاستنساخ والجلب. يتوفر البروتوكول v2 عبر العملاء منخفضي المستوى.

عمليات Git

add وcommit وstatus وdiff وmerge وcheckout وreset وstash وcherry-pick وrevert وrebase وblame وgrep.

CLI

22 أمرًا بأسلوب git، منها init وlog وstatus وdiff وadd وcommit وbranch وmerge وstash وblame وgrep. الاستنساخ والجلب والدفع متاحة عبر المكتبة فقط.

مختبَر بالمرجع

تقارن 761 سيناريو النتائج بمخرجات ملتقطة من git الحقيقي، وتُشغّل في CI؛ 605 منها مأخوذة من مجموعات اختبارات git نفسه وlibgit2 وgo-git وisomorphic-git وdulwich وJGit.

بحث شامل

blame وgrep وbisect وnotes ومرشح لمسارات السجل، دون استدعاء git من الصدفة.

لماذا Pitmaster؟

تعمل دون تثبيت git

تُحسب الالتزامات والفروق والحالة والسجل في PHP، لذا تظل المستودعات قابلة للاستخدام في الحاويات والمضيفات التي لا تحتوي على ملف git ثنائي.

مقابض بلا عمليات

تعطّل Pitmaster::processFreeOptions() الخطافات وخطافات fsmonitor والاستنساخ والجلب والدفع ونقل SSH عبر العمليات. وتظل القراءة والكتابة المحلية متاحة.

تم التحقق منها بمقارنتها مع git

تُشغّل اختبارات التكامل باستخدام ملف git الثنائي، وتحتسب مصفوفة الدعم 146 من أصل 146 ميزة ضمن النطاق على أنها متحقق منها بالمرجع ضمن نطاق التكافؤ المعلن.

SHA-1 وSHA-256

أنشئ مستودع SHA-256 باستخدام Pitmaster::init($path, 'sha256') أو init --object-format=sha256. تُقرأ ملفات pack وتُكتب؛ ويمكن قراءة ملفات commit-graph وmulti-pack index وreftable.

مقارنة مع

طرق أخرى للعمل مع مستودعات Git من PHP، وأوجه اختلاف Pitmaster.

Pitmaster مقارنةً بأدوات أخرى
git (سطر الأوامر) مناسب لـالتنفيذ المرجعي، مع مجموعة أوامر غنية تغطي العمليات عالية المستوى والوصول الكامل إلى الأجزاء الداخلية. الاختلاف عن Pitmasterتعمل Pitmaster داخل عملية PHP، ولا تستدعي العمليات الأساسية git من الصدفة. ولا تحاكي CLI سوى مجموعة فرعية من أوامر git.
czproject/git-php مناسب لـمكتبة PHP موجزة بلغة API للتهيئة والاستنساخ والالتزام والدمج والفروع والوسوم والمستودعات البعيدة. تعمل على PHP 8.0 أو أحدث، وتستخدم عميل git المثبّت. الاختلاف عن Pitmasterلا تحتاج Pitmaster إلى عميل git للعمليات الأساسية، لأنها تقرأ الكائنات وملفات pack والفهرس وتكتبها بنفسها. وتتطلب PHP 8.2 أو أحدث.
gitonomy/gitlib مناسب لـالوصول إلى المستودعات باستخدام PHP 8.4 أو أحدث دون الحاجة إلى إنشاء شيء. تعمل باستدعاء git من الصدفة. الاختلاف عن Pitmasterلا تجري Pitmaster استدعاءات للصدفة في العمليات الأساسية، ويعطّل المقبض الخالي من العمليات الأجزاء التي تبدأ عملية.
libgit2 مناسب لـتنفيذ محمول بلغة C للطرق الأساسية في Git، كمكتبة قابلة للربط، مع واجهات لـ Ruby و.NET وPython وNode.js وRust وغيرها. الاختلاف عن PitmasterPitmaster هي PHP عادية تُثبّت باستخدام Composer، ولا تحتاج إلى مكتبة مترجمة أو FFI. تستورد 63 من سيناريوهاتها المرجعية من موارد اختبارات libgit2.

المصادر، محدد

الأسئلة والأجوبة

إجابات موجزة من توثيق Pitmaster.

ابدأ بدليل البدء السريع لفتح أول مستودع لك من PHP، ثم استخدم مرجعي API وCLI لبقية المهام.