ما هو Gerrit؟
Gerrit هي أداة تعاون جماعي على الكود، مجانية، مفتوحة المصدر، وقائمة على الويب. تتكامل بشكل وثيق مع Git وتعمل كحارس صارم لقاعدة الشيفرة الخاصة بك. على عكس نموذج طلب السحب (pull-request) الأكثر شيوعًا حيث يقوم المطورون بدمج فروع الميزات، يركز Gerrit سير عمله حول التثبيتات الفردية (التغييرات). يجب مراجعة كل تثبيت والتحقق منه والموافقة عليه قبل أن يمكن دمجه في تاريخ المشروع الرسمي، مما يضمن فرعًا رئيسيًا خطيًا ونظيفًا. يتم استخدامه بكثافة من قبل المشاريع واسعة النطاق مثل مشروع أندرويد مفتوح المصدر (AOSP).
الميزات الرئيسية
- مراجعة الكود عبر الويب: يوفر واجهة نظيفة لمراجعة الكود، وإضافة تعليقات مضمنة، والتصويت على التغييرات.
- تحكم صارم في الوصول: يوفر أذونات دقيقة على مستوى المشروع والفرع، مما يتحكم في من يمكنه إرسال ومراجعة ودمج التغييرات.
- إدارة مستودعات Git: يمكن أن يعمل كخادم Git أساسي، ويدير كل الوصول إلى المستودع عبر SSH و HTTP.
- التحقق الآلي: يتكامل بسلاسة مع أنظمة CI/CD مثل Jenkins أو GitLab CI لبناء واختبار كل تغيير مقترح تلقائيًا، ويوفر درجة “+1 تم التحقق” أو “-1 فشل”.
- سير عمل قائم على التغيير: كل تثبيت هو وحدة قابلة للمراجعة ومميزة بمعرف تغيير (Change-ID) فريد. هذا يجعل من السهل تتبع التكرارات وعرض تاريخ تغيير معين.
- بنية إضافات قابلة للتوسيع: يدعم مجموعة واسعة من الإضافات لإضافة ميزات جديدة وتكاملات وتحسينات لواجهة المستخدم.
حالات الاستخدام
- مشاريع الشركات واسعة النطاق: مثالي للمؤسسات التي تتطلب عملية تقديم كود صارمة وقابلة للتدقيق وعالية الجودة.
- مشاريع مفتوحة المصدر ذات تاريخ خطي: تستخدمه مشاريع مثل Android و Go و Eclipse التي تعطي الأولوية لتاريخ تثبيت نظيف وغير متفرع.
- الصناعات المنظمة: مناسب للبيئات التي يجب فيها توثيق كل تغيير والموافقة عليه قبل التكامل.
- التحقق قبل التثبيت: مثالي لسير العمل حيث لا يجب أن يدخل أي شيء إلى الفرع الرئيسي دون اجتياز الاختبارات الآلية والمراجعة البشرية.
البدء
يختلف سير عمل Gerrit عن طلب سحب Git القياسي. بدلاً من دفع فرع وفتح طلب سحب، تقوم بدفع تثبيت إلى مرجع “سحري” خاص.
-
استنساخ المستودع: تحتاج إلى استنساخ المستودع من Gerrit، والذي سيقوم بتثبيت خطاف
commit-msgلإضافة معرف تغيير فريد تلقائيًا إلى تثبيتاتك.# استبدل بخادم Gerrit والمشروع والمستخدم الخاص بك git clone ssh://user@gerrit-server:29418/project.git cd project -
قم بإجراء التغيير وتثبيته: أنشئ تغيير الكود الخاص بك وقم بتثبيته كالمعتاد. سيضيف الخطاف سطر
Change-Id:إلى رسالة التثبيت الخاصة بك.echo "ميزتي الجديدة" >> new_feature.txt git add new_feature.txt git commit -m "إضافة ميزتي الجديدة الرائعة" -
ادفع للمراجعة: بدلاً من
git pushعادي، تقوم بدفع تثبيتك إلى وجهةrefs/for/<branch>. هذا يخبر Gerrit بإنشاء مراجعة كود جديدة.# دفع التثبيت الحالي إلى فرع 'main' للمراجعة git push origin HEAD:refs/for/main
سيرد Gerrit بعنوان URL للمراجعة التي تم إنشاؤها حديثًا، حيث يمكنك أنت وفريقك مناقشة واختبار والموافقة على التغيير.
التسعير
Gerrit مجاني تمامًا ومفتوح المصدر، ويتم توزيعه بموجب ترخيص Apache 2.0. أنت مسؤول عن تكلفة استضافة وصيانة نسختك الخاصة.
Gerrit مقابل طلبات السحب
الفرق الرئيسي هو تركيز Gerrit على التثبيتات مقابل نموذج طلب السحب الذي يركز على الفروع.
- Gerrit: المراجعة هي سلسلة من مجموعات التصحيح المطبقة على تثبيت واحد. الهدف هو إتقان تثبيت واحد قبل دمجه. ينتج عن هذا تاريخ نظيف وخطي.
- طلبات السحب/الدمج: تستند المراجعة إلى فرع قد يحتوي على العديد من التثبيتات. تتم المناقشة على مستوى الفرع، ويتم دمج الفرع بأكمله، مما يؤدي غالبًا إلى إنشاء “تثبيت دمج”.
هذا يجعل منحنى تعلم Gerrit أكثر حدة، لكنه يوفر تحكمًا لا مثيل له في تاريخ التثبيت.