contrib/ ضمن مستودع ClickHouse.
واستنادًا إلى خيارات البناء، قد لا تكون بعض هذه المكتبات قد جرى تجميعها، وبالتالي قد لا تتوفر وظائفها في وقت التشغيل.
مثال
إضافة وصيانة مكتبات الجهات الخارجية
contrib/ في مستودع ClickHouse.
تجنّب وضع نسخ من الشيفرة الخارجية مباشرةً داخل دليل المكتبة.
وبدلًا من ذلك، أنشئ وحدة Git فرعية لسحب الشيفرة الخارجية من مستودع upstream خارجي.
جميع الوحدات الفرعية التي يستخدمها ClickHouse مُدرجة في الملف .gitmodule.
- إذا كان يمكن استخدام المكتبة كما هي (وهذه هي الحالة الافتراضية)، فيمكنك الإشارة مباشرةً إلى مستودع upstream.
- إذا كانت المكتبة تحتاج إلى ترقيعات، فأنشئ fork من مستودع upstream ضمن منظمة ClickHouse على GitHub.
ClickHouse/ انطلاقًا من الفرع أو tag الذي تريد دمجه، مثل ClickHouse/2024_2 (للفرع 2024_2) أو ClickHouse/release/vX.Y.Z (للـ tag release/vX.Y.Z).
تجنّب تتبّع فروع التطوير في upstream مثل master/ main / dev (أي الفروع ذات البادئة ClickHouse/master / ClickHouse/main / ClickHouse/dev في مستودع fork).
فهذه الفروع أهداف متحرّكة، مما يجعل ضبط الإصدارات على نحو صحيح أكثر صعوبة.
وتضمن “الفروع ذات البادئة” أن عمليات السحب من مستودع upstream إلى fork ستترك فروع ClickHouse/ المخصّصة دون تأثر.
يجب أن تتتبّع الوحدات الفرعية في contrib/ فقط فروع ClickHouse/ في مستودعات الجهات الخارجية المتفرعة.
لا تُطبَّق الترقيعات إلا على فروع ClickHouse/ الخاصة بالمكتبات الخارجية.
هناك طريقتان للقيام بذلك:
- قد ترغب في إنشاء إصلاح جديد على فرع ذي بادئة
ClickHouse/في المستودع المتفرّع، مثل إصلاح sanitizer. في هذه الحالة، ادفع الإصلاح كفرع ذي بادئةClickHouse/، مثلClickHouse/fix-sanitizer-disaster. ثم أنشئ PR من الفرع الجديد إلى فرع التتبع المخصّص، مثلClickHouse/2024_2 <-- ClickHouse/fix-sanitizer-disaster، ثم ادمج PR. - قد تقوم بتحديث الوحدة الفرعية وتحتاج إلى إعادة تطبيق ترقيعات سابقة. في هذه الحالة، تكون إعادة إنشاء PRs القديمة مبالغة. وبدلًا من ذلك، ما عليك سوى تنفيذ cherry-pick للـ commits الأقدم إلى فرع
ClickHouse/الجديد (المقابل للإصدار الجديد). ولا تتردد في Squash commits الخاصة بالـ PRs التي كانت تحتوي على عدة commits. وفي أفضل الحالات، نكون قد ساهمنا بالترقيعات المخصّصة مرة أخرى في upstream، ويمكننا عندها الاستغناء عن الترقيعات في الإصدار الجديد.