やあ | مبرمج
やあ | مبرمج

@APurogurama

15 تغريدة 5 قراءة Apr 02, 2023
معشر المبرمجين أكيد أغلبكم يعرف Git بس قد سمعت في Gitflow؟
أغلب الي ما سبق له واشتغل وسط تيم برمجي ما أتوقع سمع بها المصطلح طيب اذا ما تعرفه تابع معي...
ال Gitflow هو نموذج لإدارة عمليات التطوير والإصدارات الخاصة بالبرمجيات باستخدام Git، والذي تم ابتكاره من طرف المطور Vincent Driessen في عام 2010 و الذي تكلم عنه أول مرة في هذه المقالة:
nvie.com
يمكن تعريف Gitflow بأنه مجموعة من الممارسات ل Git Workflow.
لنفترض اننا مجموعة من المبرمجين قررنا العمل على مشروع ما وحددنا Github كمنصة لادارة النسخ الخاص بمشروعنا بس هذا ما يكفي عشان شغلنا يمشي بشكل منضم الي ينقصنا أنه نتفق على منهجية لرفع الميزات الجديدة وطريقة تمسية Branches
وهذا عشان نتجنب التخبيص الي ممكن يصير لحظة رفع مهامنا مثل الي في الصورة في الضبط 😅.
يعتمد Gitflow Workflow على استخدام(Branches) لإدارة تطوير البرمجيات بشكل منظم ومنفصل.
يتألف Gitflow Workflow من خمسة أنواع من الفروع (Branches):
أول Branch هو main والي يحتوي على الإصدارات النهائية والمستقرة للبرمجيات اي الإصدار الي يكون عند العميل النهائي ممكن نسميه matser.
ثاني Branch هو develop يحتوي هذا الفرع على التغييرات الجديدة والتحديثات الي يشتغل عليها فريق المبرمجين وممكن نسميها Development
ثالث Branch هو Feature وفي الحقيقة هي مجموعة من الفروع المؤقته بحيث كل فرع يمثل ميزة جديدة راح تنضاف وكل ميزة يفضل تسميها بمسمى الميزة نفسها على سبيل المثال: feature/add-delete-button-to-products-page
مع وضع feature/ ك prefix للاسم.
البرانش هذا يتم انشاؤه من برانش Development
رابع Branch هو Release يستخدم لتحضير الإصدارات التي سيتم الإطلاع عليها من فريق QA و Security Eng لعمل اختبارات مختلفة قبل سحبه ل الفرع الرئيسي والي هو main وأيضا هذا الفرع يعتبر مؤقت يتم حذفه لما ننتهي منه.
مثال للتسمية release/1.0.0
واخر Branch هو Hotfix يستخدم هذا الفرع لإصلاح المشاكل الحرجة والعاجلة إلي يتم اكتشافها بشكل متأخر وكما والوضع لسابقاته يكون مؤقت ويتم تسميه الفرع هذا بوضع prefix زي كذا /hotfix وهذا مثال للاسم hotfix/security-fix ويتم التخلص منه لحظة سحب الاصلاحات لفرع التطوير Develop
إليك قصة قصيرة تشرح ما سبق:
بصفتي القائد الأعلى للمرمجين 😌 قررت إستخدام Gitflow Workflow لإدارة عملية التطوير الخاصة بنا بشكل أكثر كفاءة وتحسين جودة واستقرار مشروعنا.
اول شي بسويه بقوم بانشاء مستودع (Repo) في Github وبسوي أول فرع الي هو main
وبحدد الاشخاص الي لهم الصلاحية يسحبو التغييرات على هذا الفرع.
بسوي برانش ثاني الي بسميه develop والي راح اسويه نسخة من الفرع main وحتى هذا الفرع راح تكون له صلاحيات ومو أي أحد يقدر يعدل فيه
بعدها راح اقسم المهام بالتساوي على فريق المطورين
وكل شخص يسوي مهمة محددة راح يقوم بإنشاء فرع من الفرع develop ويسمي الفرع باسم المهمة الي شغال عليها مع وضع prefix زي المثال الي فوق /feature لما يخلص المبرمج مهمته راح يسوي PR اي Pull request بعدها يجي الفريق الي له الصلاحية على فرع develop يسوي تست ويتأكد انه كل شي تمام بعدها..
بعدها يتم قبول هذه الميزة واضافتها للفرع develop بعدها لما يتم الانتهاء من كل الميزات المتفق عليها والي راح تتجمع في الفرع develop راح نحذف كل البرانشات الي من نوع (feature) ونطلع فرع جديد الي هو release branch ونسوي تست كل شي اذا كل تمام يتم سحب البرانش هذا للفرع الرئيسي
وبكذا عمل deploy للفرع هذا للعميل النهائي, اذا افترضنا انه طلع لنا خطأ حرج في المشروع وقتها بشكل عاجل راح نطلع برانش جديد نوع Hotfix والي يكون بداية اسمه /hotfix ونصلح المشكلة ونطلب PR لرفع التعديلات على برانش develop بعدها نطلع release بنسخة جديدة نعيد نسوي تست ونسحب لبرانش main
شفت العمليات هذه كلها الي تكلمت عنها بنسبة %80 تكون مأتمته.
بكذا أكون خلصت هذه السلسة اتمنى تكون استفدت/ي في حال استفدت شي سوي لايك في حال ما استفدت سوي نفسك ما شفت شي.
ونلتقي في موضوع قادم ان شاء الله

جاري تحميل الاقتراحات...