أكبر إطلاق لـ غيت هاب (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أخبار التقنية والذكاء الاصطناعي. شكراً للمشاهدة، وطبعاً أراكم في المرة القادمة.

Key Takeaway

توفر ميزة طلبات السحب المتكدسة في غيت هاب طريقة جديدة لتجزئة التغييرات الضخمة وإدارتها عبر سطر الأوامر لدمجها دفعة واحدة في الفرع الرئيسي.

Highlights

  • تتيح ميزة طلبات السحب المتكدسة (Stacked PRs) في غيت هاب تقسيم التغييرات البرمجية الكبيرة إلى سلسلة من طلبات السحب الأصغر المترابطة.

  • تستهدف التغييرات الأساسية مثل مخططات قاعدة البيانات الفروع السفلية، بينما توضع مسارات واجهة برمجة التطبيقات في الفروع العلوية.

  • يؤدي تنفيذ الأمر (gh stack init) ثم (gh stack add) إلى تسهيل إنشاء الفروع المتكدسة عبر سطر أوامر غيت هاب.

  • يمكّن أمر (gh stack submit) من رفع جميع الفروع المتكدسة وإرسال طلبات السحب دفعة واحدة واجهة مستخدم سطر الأوامر.

  • يؤدي النقر فوق دمج التكديس (Merge stack) إلى دمج جميع طلبات السحب المتكدسة في الفرع الرئيسي (main) في نفس الوقت.

Timeline

مفهوم طلبات السحب المتكدسة وطريقة عملها

  • تقسيم التغييرات البرمجية الكبيرة إلى سلسلة من طلبات السحب الأصغر المترابطة.
  • استهداف طلب السحب الأول الفرع الرئيسي بينما يستهدف كل طلب لاحق الطلب الذي يسبقه.
  • وضع التغييرات الأساسية مثل قواعد البيانات في الفروع السفلية والشيفرات المعتمدة عليها في الفروع العلوية.

تمثل طلبات السحب المتكدسة مفهوماً لتنظيم التغييرات البرمجية في سلسلة تبعيات يبنى كل فرع فيها على الفرع الذي تحته. على الرغم من إمكانية ربط طلبات السحب يدوياً في غيت سابقاً، إلا أن غيت هاب توفر الآن دعماً فعلياً ومنظمياً لهذه التكديسات لتسهيل المراجعة والدمج.

استخدام سطر أوامر غيت هاب لإنشاء وإرسال التكديسات

  • تثبيت واجهة سطر أوامر غيت هاب (GitHub CLI) للاستفادة القصوى من ميزة التكديس.
  • تنفيذ أمر (gh stack init) لتهيئة التكديس الجديد وتسمية الطلب الأساسي.
  • استخدام أمر (gh stack add) لإضافة الفروع التابعة وإرسالها جميعاً عبر (gh stack submit).

تبدأ العملية بتنفيذ أمر التهيئة وتحديد طلب السحب الأساسي الذي يشير إلى الفرع الرئيسي (main). بعد إجراء التعديلات وحفظها باستخدام أوامر غيت الاعتيادية، يتم إضافة الفروع الجديدة تباعاً باستخدام أمر الإضافة. يتيح أمر الإرسال النهائي مراجعة الطلبات ودفعها دفعة واحدة إلى المنصة.

إدارة ودمج طلبات السحب المتكدسة عبر واجهة غيت هاب

  • اكتشاف غيت هاب لطلبات السحب المتكدسة تلقائياً حتى عند إنشائها بالطريقة التقليدية.
  • إتاحة زر دمج التكديس (Merge stack) لدمج جميع طلبات السحب في الفرع الرئيسي في نفس الوقت.
  • تكامل إشارات التكديس في جميع أنحاء واجهة غيت هاب ومسارات العمل لتسهيل إدارة التغييرات الضخمة.

تعرض واجهة غيت هاب أيقونة خاصة تدل على ارتباط طلبات السحب بتكديس معين. يتيح طلب السحب العلوي خيار دمج التكديس بالكامل، مما غنى عن انتظار دمج كل طلب منفصل وإجراء عمليات إعادة الأساس يدوياً. توفر هذه الميزة كفاءة عالية عند تكاملها مع أدوات الذكاء الاصطناعي لتنفيذ المهام الطويلة.

Community Posts

View all posts