إصدار التحكم بالمصادر Git 2.37

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

ومقارنة بالإصدار السابق، يتضمن الإصدار الجديد 395 تغييرًا، تم إعدادها بمشاركة 75 مطورًا، شارك 20 منهم في التطوير لأول مرة. الابتكارات الرئيسية:

  • أصبحت آلية الفهارس الجزئية (الفهرس المتناثر)، التي تغطي جزءًا فقط من المستودع، جاهزة للاستخدام على نطاق واسع. يمكن للفهارس الجزئية تحسين الأداء وتوفير المساحة في المستودعات التي تقوم بعمليات الاستنساخ الجزئي (السحب المتناثر) أو العمل مع نسخة غير كاملة من المستودع. يكمل الإصدار الجديد دمج الفهارس الجزئية في أوامر git show وgit sparse-checkout وأوامر git stash. تظهر فائدة الأداء الأكثر وضوحًا من استخدام الفهارس الجزئية في الأمر git stash، والذي شهد زيادة بنسبة 80% في سرعة التنفيذ في بعض المواقف.
  • تم تطبيق آلية جديدة لـ "الحزم الأساسية" لتعبئة الكائنات التي لا يمكن الوصول إليها والتي لم تتم الإشارة إليها في المستودع (لا تتم الإشارة إليها بواسطة الفروع أو العلامات). يتم حذف الكائنات التي لا يمكن الوصول إليها بواسطة أداة تجميع البيانات المهملة، ولكنها تظل في المستودع لفترة معينة قبل أن يتم حذفها لتجنب حالات السباق. لتتبع فترة ظهور الكائنات التي يتعذر الوصول إليها، من الضروري إرفاق علامات بها مع وقت تغيير الكائنات المشابهة، مما لا يسمح بتخزينها في ملف حزمة واحد يكون فيه لجميع الكائنات وقت تغيير مشترك. في السابق، كان حفظ كل كائن في ملف منفصل يؤدي إلى حدوث مشكلات عندما يكون هناك عدد كبير من الكائنات الجديدة التي لا يمكن الوصول إليها والتي لم تكن مؤهلة للحذف بعد. تسمح لك آلية "حزم Cruft" المقترحة بتخزين جميع الكائنات التي لا يمكن الوصول إليها في ملف حزمة واحد، وعكس البيانات حول وقت التعديل لكل كائن في جدول منفصل مخزن في ملف بامتداد ".mtimes".
  • بالنسبة لنظامي التشغيل Windows وmacOS، توجد آلية مدمجة لتتبع التغييرات في نظام الملفات، مما يسمح لك بتجنب التكرار على دليل العمل بأكمله عند تنفيذ عمليات مثل "حالة git". في السابق، لتتبع التغييرات، يمكن توصيل الأدوات المساعدة الخارجية لتتبع التغييرات في FS، مثل Watchman، عبر الخطافات، ولكن هذا يتطلب تثبيت برامج وتكوينات إضافية. الآن أصبحت الوظيفة المحددة مدمجة ويمكن تمكينها باستخدام الأمر "git config core.fsmonitor true".
  • في الأمر "git sparse-checkout"، تم الإعلان عن أن دعم بديل للوضع "—cone"، طريقة تعريف القوالب للاستنساخ الجزئي، قد عفا عليه الزمن، مما يسمح، عند تحديد جزء المستودع الذي يخضع لـ عملية الاستنساخ، لسرد الملفات الفردية باستخدام بناء الجملة ".gitignore"، والذي لا يسمح باستخدام الفهارس الجزئية الأمثل.
  • زيادة المرونة في تكوين استدعاء fsync() لتدفق التغييرات على القرص. تمت إضافة دعم استراتيجية المزامنة "الدُفعية" إلى المعلمة "core.fsyncMethod"، والتي تسمح بتسريع العمل عند كتابة عدد كبير من الملفات الفردية عن طريق تجميع التغييرات في ذاكرة التخزين المؤقت للكتابة، والتي تتم إعادة تعيينها بواسطة fsync() واحد يتصل. تم الانتهاء من الاختبار، الذي أدى إلى إضافة 500 ملف باستخدام الأمر "git add"، في 0.15 ثانية عند تمكين الوضع الجديد، بينما استغرق استدعاء fsync() 1.88 ثانية لكل ملف، وبدون استخدام fsync - 0.06 ثانية.
  • أوامر اجتياز الفروع مثل "git log" و"git rev-list" لديها الآن خيار "-since-as-filter=X" الذي يسمح لك بتصفية المعلومات حول الالتزامات الأقدم من "X". على عكس الخيار "-منذ"، يتم تنفيذ الأمر الجديد كمرشح لا يوقف البحث بعد الالتزام الأول الأقدم من الوقت المحدد.
  • في الأمر "git Remote"، عند تحديد العلامة "-v"، يتم عرض معلومات حول النسخ الجزئية للمستودع.
  • تمت إضافة إعداد "transfer.credentialsInUrl"، والذي يمكنه أخذ القيم "warn" و"die" و"allow". إذا تم تحديده في المعلمة "remote. .url" لبيانات اعتماد النص العادي، فإن محاولة تنفيذ عملية "جلب" أو "دفع" ستفشل مع حدوث خطأ إذا تم تعيين الإعداد "transfer.credentialsInUrl" على "الموت"، أو تحذير إذا تم ضبطه على "تحذير".
  • افتراضيًا، يتم تمكين التنفيذ الجديد للوضع التفاعلي للأمر "git add -i"، المعاد كتابته من Perl إلى C.

المصدر: opennet.ru

إضافة تعليق