أكبر إطلاق لـ غيت هاب (GitHub) منذ سنوات. طلبات السحب المتراكمة (Stacked PRs).
BBetter Stack
Computing/SoftwareInternet Technology
Transcript
00:00:00أصدرت غيت هاب (GitHub) للتو أكبر تحديث لها منذ سنوات، وهو طلبات السحب المتكدسة (Stacked PRs)، وهي طريقة جديدة تماماً لتجزئة
00:00:05طلبات السحب الضخمة إلى أجزاء أكثر قابلية للإدارة. في هذا الفيديو، سنناقش تماماً ماهيتها
00:00:10ولماذا قد تستخدمها. طلبات السحب المتكدسة هي مفهوم قوي ولكنه بسيط إلى حد ما. وهو تقسيم التغييرات البرمجية الكبيرة
00:00:21إلى سلسلة من طلبات السحب الأصغر المترابطة. حيث يمكنك مراجعتها ودمجها بشكل مستقل.
00:00:26لإنشاء تكديس، تحتاج إلى طلب سحب واحد أو أكثر في نفس المستودع حيث يستهدف طلب السحب الأول
00:00:31أو السفلي الفرع الرئيسي (Trunk)، وغالباً ما يكون الفرع الافتراضي لمستودعك مثل main،
00:00:37ثم يستهدف كل طلب سحب لاحق الطلب الذي يسبقه. وهذا يشكل سلسلة تبعيات حيث
00:00:42يبنى كل فرع على الفرع الذي تحته. التغييرات الأساسية مثل الأنواع المشتركة أو مخططات قاعدة البيانات
00:00:48توضع في الفروع السفلية، والشيفرات التي تعتمد عليها مثل مسارات واجهة برمجة التطبيقات ومكونات واجهة المستخدم
00:00:53توضع في الفروع العلوية. وقد تفكر قائلاً: حسنًا، لقد كنت قادراً دائماً على فعل هذا، أليس كذلك؟
00:00:58يمكنني إنشاء طلب سحب إلى main ثم إنشاء طلب سحب ثانٍ لذلك الطلب وتسلسل طلبات السحب قدر ما تشاء.
00:01:04وهذا صحيح تماماً لأنه في سياق غيت (Git) وحدها، لا يوجد شيء اسمه طلبات سحب متكدسة
00:01:09وستظل تربط طلبات السحب ببعضها البعض فقط على شكل سلسلة. وفقط داخل غيت هاب نفسها، تعني طلبات السحب المتكدسة
00:01:16شيئاً فعلياً. لكنها توفر بعض المزايا الهائلة. وإذا كنت تريد البقاء على اطلاع دائم
00:01:22بالتقنية والذكاء الاصطناعي، فاشترك في (Better Stack). لذا للاستفادة من طلبات السحب المتكدسة، من الأفضل أن يكون لديك
00:01:27واجهة سطر أوامر غيت هاب (GitHub CLI) مثبتة. وبعد ذلك، يمكنك تشغيل (gh stack init) ثم تعريف التكديس الجديد الخاص بك.
00:01:33لذا دعنا ننتقل إلى محرر النصوص الخاص بنا ويمكننا الآن استعراض مثال على تكديس عدة طلبات سحب.
00:01:38إذن أول شيء سنفعله هو تشغيل (gh stack init setup database). إذن في هذه الحالة،
00:01:44سيوصى بتسمية طلب السحب أو الفرع بـ (setup database). وسيكون هذا هو طلب السحب الأساسي الذي
00:01:50يشير الآن إلى main. ثم يمكننا إجراء تغييراتنا. بالنسبة لهذا العرض التوضيحي، سأقوم فقط بإدراج
00:01:54التغييرات في ملف التوثيق (Readme). لذا ذكرت أنني قمت بتنفيذ قاعدة البيانات وبعدها يمكنك ببساطة تنفيذ (git add)،
00:01:59و(git commit). إذن كل شيء هنا هو مجرد أوامر غيت قياسية. وعندما تكون مستعداً للانتقال إلى مجموعة التغييرات التالية،
00:02:04يمكنك حينئذٍ تنفيذ الأمر (gh stack add) ثم اسم فرعك التالي. وبعد ذلك يمكنني إجراء المزيد من التغييرات،
00:02:10وإنشاء نقاط نهاية واجهة برمجة التطبيقات. ربما أريد إضافة بعض النقاط الإضافية هنا. لذا سأقوم بحفظ (Commit) هذا التغيير.
00:02:16ثم يمكننا إضافة تغيير ثانٍ أيضاً. وبعد ذلك مرة أخرى، يمكننا حفظه. لذا كما تتوقع،
00:02:20يمكنك إجراء عمليات حفظ متعددة لكل فرع. وأخيراً، سنقوم بتنفيذ (gh stack add setup front end)،
00:02:25ثم إجراء تغيير إضافي هنا. وبعد ذلك مرة أخرى، ننفذ (git add) و(git commit). الآن، بمجرد أن نكون راضين
00:02:31عن جميع تغييراتنا ونريد دفع كل تلك الفروع إلى غيت هاب في نفس الوقت،
00:02:36يمكننا ببساطة تشغيل أمر واحد وهو (gh stack submit). سيعرض لنا هذا واجهة مستخدم مصغرة لسطر الأوامر حيث يمكننا استعراض
00:02:42كل طلب سحب في التكديس وإضافة عنوان ووصف إذا أردنا. أو يمكننا
00:02:48فقط الضغط على التالي لكل منها ثم إرسال ثلاثة طلبات سحب دفعة واحدة. وكما ترون، تم دفع جميع طلبات السحب الثلاثة تلك،
00:02:55وهي (setup database)، و(API)، و(front end) إلى غيت هاب كتكديس من خلال أمر واحد.
00:03:02ويمكنك في الواقع القيام بكل هذا بدون استخدام سطر أوامر غيت هاب. فقط باتباع الطريقة التقليدية
00:03:07في ربط طلبات السحب ببعضها يدوياً من main إلى PR1 ثم PR2. وحينها ستكتشف غيت هاب هذه الطلبات كتكديس
00:03:14بمجرد رفعها بالكامل. يجعل سطر الأوامر هذه العملية أسهل بكثير في الإدارة. تذكر الآن أنه لم يتغير شيء
00:03:20داخل نظام غيت نفسه. إذا كنت تريد فحص فرع مختلف تماماً ليس ضمن التكديس
00:03:24الذي تعمل عليه، يمكنك فعل ذلك ثم العودة إلى الفرع الموجود ضمن التكديس لاحقاً.
00:03:29وإذا توجهنا الآن إلى غيت هاب بنفسها، سترى أن لدينا كل طلب من طلبات السحب الثلاثة وهي مرفوعة
00:03:34كطلبات سحب هنا. ويمكنك أن ترى أيضاً أن لدينا أيقونة تكديس صغيرة هنا تخبرنا بأن هذه
00:03:39طلبات السحب مرتبطة بتكديس. وإذا فتحنا طلب السحب العلوي (Tail PR)، أي الموجود في قمة التكديس، يمكنك
00:03:45رؤية أنه بالأسفل، يمكننا النقر فوق دمج التكديس (Merge stack) وستظهر لك واجهة المستخدم هذه أيضاً. حيث يمكننا رؤية كل
00:03:49طلب سحب كجزء من التكديس. ويمكننا مراجعة ذلك والموافقة عليه واحدة تلو الأخرى. ولكن بمجرد أن نكون راضين
00:03:54عن كل هذا، يمكنك ببساطة النقر فوق دمج التكديس وسيتم دمج كل طلب سحب من تلك الطلبات
00:03:59في الفرع الرئيسي (main) في نفس الوقت. ستلاحظ أيضاً أن الإشارات إلى التكاليس أصبحت الآن مدمجة
00:04:03في جميع أنحاء غيت هاب. لذا يمكنك رؤيتها في صفحة طلب السحب، وعلى صفحة
00:04:09قائمة طلبات السحب. وستراها أيضاً في أشياء مثل مسارات عمل غيت هاب (GitHub workflows) وفعلياً في جميع أنحاء
00:04:14التطبيق. لذا إذا كنت تعمل على طلبات سحب ضخمة وتحتاج إلى طريقة سهلة لتجزئتها
00:04:18إلى أقسام منفصلة، فلن تحتاج بعد الآن إلى انتظار دمج طلبات السحب المنفصلة في main
00:04:23والقيام بكل عمليات إعادة الأساس (Rebasing) والدمج بنفسك. يمكنك ببساطة إنشاء تكديس طويل واحد وغيت هاب
00:04:28مجهزة الآن بشكل مثالي لإدارة كل ذلك داخل واجهة المستخدم. ويعد سطر الأوامر طريقة رائعة حقاً
00:04:33لإدارة كل ذلك تلقائياً. لقد كان هناك استجابة إيجابية بشكل ساحق لهذا الأمر
00:04:38عبر الإنترنت. وخاصة عند استخدامه مع الذكاء الاصطناعي، أعتقد أن هذه قد تكون ميزة قوية حقاً
00:04:43عندما تقوم بأشياء مثل تصميم حلقات عمل الوكلاء والسماح للوكيل بالعمل لساعات. حيث يمكنه الآن إنشاء
00:04:48طلبات سحب متكدسة وربط كل هذا العمل ببعضه بدلاً من إنشاء إما طلب سحب ضخم أو الكثير
00:04:54من طلبات السحب المنفصلة تماماً. لكنني أتمنى أن تجدوا هذا مفيداً يا أصدقاء. أخبروني برأيكم
00:04:58في طلبات السحب المتكدسة في التعليقات واشتركوا في (Better Stack) للبقاء على اطلاع بأحدث
00:05:02أخبار التقنية والذكاء الاصطناعي. شكراً للمشاهدة، وطبعاً أراكم في المرة القادمة.