Git 2.50: تحسينات الأداء لمستودعات البيانات الكبيرة والمزيد

بوابة-2.50

قبل أيام قليلة تم الإعلان عنه إصدار النسخة الجديدة من مشروع Git 2.50, تقديم أكثر من 600 تغيير مدفوعًا بمجتمع نشط شمل هذه المرة 98 مطورًا، بما في ذلك 35 مساهمًا جديدًا.

يتميز هذا الإصدار الجديد من Git 2.50 بدمج الأوامر الجديدة (git-diff-pairs)، والوظائف الجديدة للتنظيف والتصفية والصيانة، واستبدال محرك الدمج المتكرر بـ ORT، بالإضافة إلى تحسينات الأداء وإصلاحات الأخطاء.

بوابة 2.50 الميزات الجديدة الرئيسية

في هذا الإصدار الجديد من Git 2.50، إحدى أهم الميزات الجديدة هي تحسين معالجة ما يسمى بـ "حزم النفايات"، أي حزم من الكائنات التي لا يمكن الوصول إليها أو لا تتم الإشارة إليها عبر الفروع أو الوسوم. عادةً، كان Git يخزن هذه الكائنات في ملف حزمة واحد كبير، مما قد يُسبب مشاكل في الأداء عند إعادة تغليف المستودعات بالعديد من هذه العناصر.

مع الإصدار الجديد، يتيح لك Git تقسيم حزم البيانات هذه إلى عدة ملفات أصغر حجمًا، مما يقلل من استخدام القرص ويحسن أداء الإدخال/الإخراج للعمليات الضخمة. بالإضافة إلى ذلك،وأدخل الخيار –combine-cruft-below-sizeالتي تمكن دمج الحزم الصغيرة في حزمة واحدة بشكل أكثر مرونة من خيار –max-cruft-size السابق، دون فرض حد أقصى على حجم الملف المُجمّع. هذه الميزة الجديدة مفيدة بشكل خاص في المشاريع التي تحتوي على كائنات يتيمة موزعة على حزم متعددة.

تحسين آخر يستهدف مستودعات البيانات واسعة النطاق هو الدعم التجريبي ل التحديث التدريجي لـ مؤشرات MIDX والتي يقومون بتخزين المعلومات حول الكائنات في طبقات منفصلة استخدام ملفات البت، مما يسمح بتحديثات أسرع عند إضافة التزامات جديدة. يُعد هذا التطور بالغ الأهمية للمستودعات الكبيرة التي تتطلب عمليات فهرسة سريعة دون الحاجة إلى إعادة بناء البيانات الوصفية بالكامل.

الاستبدال الكامل لمحرك الدمج المتكرر باستخدام ORT

يقدم Git 2.50 تغييرًا كبيرًا مع الإزالة الدائمة لمحرك الاندماج المتكرر التقليدية. بدلا من ذلك، تم توحيد استخدام العلاج عن طريق الفمل محرك اندماج أكثر حداثة وقابلية للصيانة وكفاءة. لا يوفر ORT تحليلًا أكثر دقة للتعارضات فحسب، بل يسمح لك أيضًا بالتحقق من إمكانية الدمج دون إنشاء كائنات إضافية. علاوة على ذلك، يتضمن أمر merge-tree الآن خيار -quiet لاستخدامه كمدقق دمج صامت دون تعديل المستودع.

gitt-diff-pairs: الحل لمشاكل قابلية التوسع

لا شك أن مراجعة الكود أحد ركائز التطوير التعاوني الحديث، وتلعب الاختلافات بين المراجعات دورًا هامًا في هذه العملية. مع إصدار Git 2.50، طُرح حلٌّ مُصمَّمٌ للتوسع: أمر git-diff-pairs الجديد.

تقليديًا، للحصول على مقارنة بين نسختين، يمكنك استخدام أمر مثل:

git diff HEAD~1 HEAD

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

لهذا السبب تم تصميم git-diff-pairs خصيصًا لتلقي الإدخال الخام مباشرةً من مخرجات git diff-tree، وإنشاء التصحيحات المقابلة بكفاءة ودقة.

الاستخدام بسيط مثل:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

يأخذ هذا الأمر أزواج الكائنات المُقدّمة ويُولّد مُخرَجات الاختلاف الدقيقة، مع الحفاظ على المعلومات السياقية، والسماح بتقسيم العمل إلى دفعات أصغر. هذا يفتح الباب أمام المعالجة المتوازية، ويُحسّن كفاءة الموارد، ويُسهّل قابلية التوسع في الأدوات القائمة على الاختلاف مثل GitLab.

ميزات جديدة للتنظيف والتصفية والصيانة

يتضمن Git 2.50 العديد من الأدوات الإضافية المصممة لتحسين صيانة المستودع:

  • تمت إضافة الأمر إسقاط git reflog، والذي يسمح لك بحذف سجل المراجعة بالكامل لفرع معين، وهو أمر مثالي لتنظيف سجل عملك عندما لم تعد بحاجة إلى الاحتفاظ بالمراجع السابقة.
  • الخيار -فلتر أصبح cat-file –batch متاحًا الآن في git، مما يسمح لك بتصفية النتائج حسب نوع الكائن.

بالإضافة إلى ذلك، تم تسليط الضوء أيضًا على العديد من التحسينات الداخلية:

  • تحسين استخدام الروابط الرمزية، مع تخزين البادئة وتقليل الفحوصات المكررة.
  • إزالة تبعيات Perl في الوثائق ونصوص الاختبار، واستبدالها بوظائف shell أو تنفيذات C، مما يجعل من السهل تجميعها على الأنظمة ذات التكوينات البسيطة.
  • بما في ذلك وحدة التحكم اختلاف المستخدم لتحليل الاختلافات في ملفات .ini.
  • تم تحسين توافق أمر git send-email مع خوادم SMTP مثل Outlook.

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