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

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

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

  • أضاف أمر "git Shortlog"، المصمم لعرض ملخصات مع إحصائيات من تاريخ التغييرات، خيار "-group" للتجميع التعسفي للإلتزامات حسب الحقول التي لا تقتصر على المؤلف أو المرسل. على سبيل المثال، لعرض قائمة بالمطورين مع معلومات حول عدد التغييرات، مع الأخذ في الاعتبار المساعدين المذكورين في حقل "التأليف المشترك"، يمكنك استخدام الأمر: git shortlog -ns --group=author - -group=trailer:شارك في تأليفه

    يمكن تجميع مخرجات Shortlog باستخدام محددات التنسيق، ويمكن أن يؤدي خيار "--group" إلى تبسيط عملية إنشاء التقارير المعقدة بشكل كبير وإلغاء الحاجة إلى أوامر فرز إضافية. على سبيل المثال، لإنشاء تقرير يحتوي على معلومات حول عدد الالتزامات التي تم قبولها لإصدار معين في كل شهر، يمكنك تحديد: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 في السابق، لإجراء عملية مماثلة، كان من الضروري استخدام الأدوات المساعدة للفرز واليونيك: git log v2.38.0 .. —date='format:%Y -%m' —format='%cd' | فرز | يونيك -ج

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

    يتم تحديد طول الفترة الزمنية التي تبقى فيها الكائنات التي لا يمكن الوصول إليها في المستودع قبل أن يتم حذفها فعليًا من خلال خيار "—Prune=" " ومع ذلك، على الرغم من أن التأخير قبل الحذف يعد طريقة فعالة وعملية إلى حد ما لمنع تلف المستودع بسبب ظروف السباق، إلا أنه لا يمكن الاعتماد عليه بنسبة 100%. لتسهيل استعادة المستودع التالف، يوفر الإصدار الجديد القدرة على حفظ الكائنات المفقودة عن طريق إضافة خيار "--expire-to" إلى أمر "git repack"، والذي يسمح لك بتحديد ملف لإنشاء ملف خارجي نسخة من كافة الكائنات المحذوفة. على سبيل المثال، لحفظ الكائنات التي لا يمكن الوصول إليها والتي لم تتغير في آخر 5 دقائق في ملف Backup.git، يمكنك استخدام الأمر: git repack --cruft --cruft-expiration=5.Minutes.ago -d --expire -to=../backup.git

  • زيادة كبيرة (تصل إلى 70٪) في سرعة عملية "git grep -cached" عند البحث في المناطق التي تستخدم الاستنساخ الجزئي (الخروج المتناثر) والتي توجد لها فهارس جزئية (فهرس متناثر). في السابق، عند تحديد خيار "-cached"، كان البحث يتم أولاً في الفهرس العادي، ثم في الفهرس الجزئي، مما أدى إلى تأخير ملحوظ عند البحث في المستودعات الكبيرة.
  • تم تسريع عملية التحقق من تماسك الكائنات الجديدة قبل وضعها في المستودع أثناء عملية "git Push". من خلال التحول إلى حساب الروابط المعلن عنها فقط عند الفحص، في مستودع اختبار يحتوي على 7 ملايين رابط، منها 3% فقط مغطاة بعملية الدفع، سمحت التحسينات التي تم إجراؤها بتقليل وقت الفحص بمقدار 4.5 مرات.
  • للحماية من التجاوزات المحتملة للأعداد الصحيحة في التعليمات البرمجية، يحدد أمر "git Apply" الحد الأقصى لحجم التصحيحات التي يمكن معالجتها. إذا تجاوز حجم التصحيح 1 جيجابايت، فسيتم الآن عرض خطأ.
  • للحماية من الثغرات الأمنية المحتملة، تم إجراء تغييرات لتنظيف المعلومات غير الضرورية من الرؤوس التي تم تعيينها عند استخدام الوحدة النمطية h2h3 مع خيار GIT_TRACE_CURL=1 أو GIT_CURL_VERBOSE=1 مع HTTP/2.
  • عند إجراء فحص على فرع يمثل رابطًا رمزيًا لفرع آخر، يعرض الأمر "git الرمزي-ref HEAD" الآن اسم الفرع المستهدف بدلاً من اسم الارتباط الرمزي.
  • تمت إضافة دعم للوسيطة @{-1} إلى خيار "--edit-description" ("فرع git —وصف التحرير @{-1}") لتحرير وصف الفرع السابق.
  • تمت إضافة أمر "git merge-tree --stdin" لتمرير قائمة الخيارات عبر الإدخال القياسي.
  • في أنظمة ملفات الشبكة، يتم تعطيل معالج fsmonitor، الذي يراقب التغييرات في نظام الملفات، بشكل افتراضي.

المصدر: opennet.ru

إضافة تعليق