Coroid يحتوي على أربع وحدات عمل. تتداخل هذه الوحدات مع بعضها، واختيار الوحدة المناسبة يعتمد بشكل أساسي على حجم العمل ومدى ضرورة تنفيذه دفعة واحدة.
| وحدة | حجم | ينتهي بـ |
|---|---|---|
| مهمة | تغيير واحد | وحدة pull request واحدة |
| خطة | ميزة مقسمة إلى مراحل | وحدة pull request واحدة للخطة بأكملها |
| دورة عمل | كتلة عمل ممتدة عبر الزمن | ما تنتجه مهامها |
| مسار | تدفق عمل متوازي | الفرع الذي يتم دمج عمل الخطة فيه |
مهمة
هي الوحدة الأساسية. مهمة واحدة تمثل وحدة عمل تنتج وحدة pull request واحدة، وهي ما يتم تنفيذه فعليًا — أما الخطط ودورات العمل والمسارات فهي كلها طرق لتنظيم المهام.
إذا كان بإمكانك وصف النتيجة في فقرة واحدة ويمكن للمراجع قراءة النتيجة في جلسة واحدة، فهي تُعتبر مهمة.
خطة
عندما يحتاج العمل إلى عدة تغييرات بترتيب معين، يتحول إلى خطة: مجموعة مرتبة من المهام مقسمة إلى مراحل، تقوم بالموافقة عليها قبل كتابة أي كود.
استخدم خطة عندما:
- تعتمد الخطوات اللاحقة على الخطوات السابقة
- ترغب في رؤية النهج الكامل قبل الالتزام بتنفيذ أي جزء منه
- يكون العمل عبارة عن ميزة وليس مجرد تغيير
الموافقة على الخطة تُعد نقطة التدخل الأقل تكلفة في النظام. رفض النهج هنا يكلف دقيقة واحدة؛ بينما رفضه بعد تنفيذ ثلاث مهام يكلف ثلاث عمليات تنفيذ.
كيف تصل الخطة إلى مستودعك
مهام الخطة لا تفتح كل منها وحدة pull request. تعمل هذه المهام على فروعها الخاصة وتندمج في مسار مشترك. فرع المسار، ويتم ترقية ذلك الفرع ليصبح طلب سحب واحد مقابل فرعك الأساسي.
task branch ─┐
task branch ─┼─► lane branch ─► one pull request ─► main
task branch ─┘وبالتالي، يمكنك مراجعة الميزة المجمعة دفعة واحدة، مع رؤية كل التغييرات أمامك، بدلاً من الموافقة على مراحل ناقصة بشكل منفصل.
الاستثناء هو العمل الذي يشمل عدة مشاريع: فالمهمة التي تنتمي إلى مشروع مختلف عن المسار تُرقى بشكل منفصل، لذا تنتج خطط متعددة المشاريع pull request لكل مستودع. هذا أمر لا مفر منه — فـ pull request لا يمكن أن يمتد عبر مستودعين.
دورة عمل
حاوية محددة زمنياً للعمل، مع مقاييسها وجدولها الزمني الخاص. تُجيب دورات العمل على سؤال «ما الذي سنقوم به خلال هذه الفترة، وما مدى نجاحه؟» بدلاً من «كيف يتم بناء هذه الميزة؟».
استخدم دورة عمل عند تنسيق عمل الفريق على مدى فترة زمنية. استخدم خطة عند تقسيم ميزة واحدة. هما ليسا بديلين لبعضهما — يمكن أن تحتوي دورة عمل على مهام تنتمي إلى عدة خطط.
مسار
المسار هو المكان الذي تُدمج فيه الأعمال المتوازية للخطة. تستهدف المهام فرع المسار بدلاً من فرعك الأساسي، حتى يتمكن عدة وكلاء من التقدم في نفس الوقت دون تضارب، ويتم ترقية النتيجة المجمعة كـ pull request واحد بمجرد أن تستوفي الشروط.
بينما تتعلق الخطة بـ الترتيب، فإن المسار يتعلق بـ التزامن و الدمج. إذا كان لديك القدرة على تشغيل عدة وكلاء وعمل لا يتطلب تنفيذًا تسلسليًا صارمًا، فالمسار هو ما يسمح لهم بالعمل معًا والوصول في النهاية كتغيير قابل للمراجعة واحد.
الاختيار
السؤال ليس حول عدد طلبات السحب التي تريدها — فكل من المهمة والخطة تصل كوحدة واحدة. بل يتعلق بمدى حاجة العمل إلى حدوث تغييرات قبل أن تكون النتيجة جاهزة للمراجعة.
- هل هذا تغيير واحد يمكن للمراجع قراءته في جلسة واحدة؟ نعم ← مهمة.
- هل يحتاج إلى عدة تغييرات متسلسلة قبل أن يكون ذا معنى ككل؟ نعم ← خطة. يتولى مسارها تشغيل الأجزاء بشكل متوازٍ حيثما يسمح ذلك.
تقف دورات العمل إلى جانب كل هذا كطبقة للتخطيط والإبلاغ.
ما الذي يحدد مدى قدرة النظام على تشغيل العمليات في نفس الوقت
ليس الهيكل — بل القدرة. خطة تحتوي على عشر مهام آمنة للتشغيل المتوازي ومكان لوكيل واحد ستشغلها واحدة تلو الأخرى. انظر إلى القدرة ومواقع الوكلاء.