Sapling ، نظام تحكم في شفرة المصدر متوافق مع Git

شتلة

يؤكد Sapling على سهولة الاستخدام أثناء التوسع إلى أكبر مستودعات في العالم.

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

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

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

بالإضافة إلى تحميل البيانات التكييفية ، تنفذ Sapling أيضًا تحسينات تهدف إلى تقليل حمل المعلومات مع سجل التغييرات. (على سبيل المثال ، 3/4 من البيانات الموجودة في مستودع مع Linux kernel هي سجل التغييرات).

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

كان المشروع قيد التطوير خلال السنوات العشر الماضية وتم إنشاؤه لحل المشكلات عند الوصول إلى مستودعات متجانسة كبيرة جدًا مع فرع رئيسي ، حيث تم ممارسة استخدام عملية "rebase" بدلاً من "دمج".

في ذلك الوقت ، لم تكن هناك حلول مفتوحة للعمل مع مثل هذه المستودعات ، وقرر مهندسو Facebook إنشاء نظام تحكم جديد في الإصدار يلبي احتياجات الشركة ، بدلاً من تقسيم المشاريع إلى مستودعات صغيرة ، مما يؤدي إلى إدارة تبعية أكثر تعقيدًا ( في وقت واحد ، لحل مشكلة مماثلة ، أنشأت Microsoft طبقة GVFS).

في البداية ، استخدم Facebook نظام Mercurial وتم تطوير مشروع Sapling في البداية كإضافة إلى Mercurial. بمرور الوقت ، أصبح النظام مشروعًا مستقلاً مع البروتوكول الخاص به ، وتنسيق التخزين ، والخوارزميات ، والتي تم توسيعها أيضًا مع القدرة على التفاعل مع مستودعات Git.

للعمل ، تم اقتراح أداة سطر الأوامر "sl" ، التي تنفذ مفاهيم نموذجية ، وسير عمل ، وواجهة مألوفة للمطورين المألوفين مع Git و Mercurial. تختلف المصطلحات والأوامر في Sapling قليلاً عن Git وأقرب إلى Mercurial.

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

تحسن ملحوظ آخر في الشتلات هو ذلك يجعل عملية إصلاح الأخطاء وتحليلها والعودة إلى الحالة السابقة أسهل بكثير. على سبيل المثال ، تُقترح الأوامر "sl undo" و "sl redo" و "sl uncommit" و "sl unmend" لعكس العديد من العمليات و "sl hide" و "sl unhide" لإخفاء عمليات الإخفاء مؤقتًا وللتصفح التفاعلي. تنص Sapling أيضًا على دعم مفهوم حزمة الالتزام ، والذي يسمح لك بتنظيم مراجعة خطوة بخطوة عن طريق تقسيم الوظائف المعقدة إلى مجموعة تدريجية أصغر وأكثر قابلية للفهم (من إطار عمل أساسي إلى ميزة نهائية).

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

لم يتم فتح رمز هذه المكونات المستخدمة في البنية التحتية لفيسبوك بعد ، لكن الشركة وعدت بإصداره في المستقبل. ومع ذلك ، يمكن العثور بالفعل على نماذج خادم Mononoke (في Rust) و VFS EdenFS (في C ++) في مستودع Sapling. هذه المكونات اختيارية وعميل Sapling يكفي للعمل معه ، والذي يدعم استنساخ مستودعات Git ، والتفاعل مع الخوادم المستندة إلى Git LFS ، والعمل مع مضيفي git مثل GitHub.

تم إعداد العديد من المكونات الإضافية لـ Sapling، بما في ذلك واجهة ReviewStack لمراجعة التغييرات (رمز ضمن GPLv2) ، والذي يسمح لك بمعالجة طلبات السحب على GitHub واستخدام عرض مكدس التغيير.

إذا كنت مهتمًا بمعرفة المزيد عنها ، يمكنك الرجوع إلى التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.