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

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

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

  • أصبح الآن لأوامر "git log" و"git show" خيار "—remerge-diff" الذي يسمح لك بإظهار الاختلافات بين النتيجة الإجمالية للدمج والبيانات الفعلية التي تنعكس في الالتزام بعد معالجة أمر "merge" ، والذي يسمح لك بتقييم التغييرات التي تم إجراؤها نتيجة لحل تعارضات الاندماج بوضوح. يقوم أمر "git show" العادي بوضع مسافة بادئة لحلول التعارض المختلفة، مما يجعل من الصعب فهم التغييرات. على سبيل المثال، في لقطة الشاشة الموجودة أسفل السطر "+/-" بدون مسافة بادئة يُظهر الحل الأخير للتعارض المرتبط بإعادة تسمية sha1 إلى oid في التعليق في الفرع الأول، و"+/-" مع مسافة بادئة يُظهر الحرف الأولي حل التعارض الناتج عن ظهور وسيطة إضافية في الفرع الثاني في الدالة dwim_ref().
    إصدار التحكم بالمصادر Git 2.36

    عند استخدام الخيار "--remerge-diff"، لا يتم فصل الاختلافات بين قرارات التعارض لكل فرع أصل، ولكن يتم عرض الاختلافات الإجمالية بين الملف الذي يحتوي على تعارضات مدمجة والملف الذي تم حل التعارضات فيه.

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

  • زيادة المرونة في تكوين سلوك مسح ذاكرة التخزين المؤقت على القرص من خلال استدعاء الدالة fsync(). تم تقسيم المعلمة core.fsyncObjectFiles المتوفرة مسبقًا إلى متغيري التكوين core.fsync وcore.fsyncMethod، مما يوفر القدرة على تطبيق fsync ليس فقط على ملفات الكائنات (.git/objects)، ولكن أيضًا على هياكل git الأخرى مثل الروابط ( .git /refs)، وإعادة التسجيل وحزم الملفات.

    باستخدام المتغير core.fsync، يمكنك تحديد قائمة بهياكل Git الداخلية التي سيتم استدعاء fsync لها أيضًا بعد عملية الكتابة. يتيح لك المتغير core.fsyncMethod تحديد طريقة لمسح ذاكرة التخزين المؤقت، على سبيل المثال، يمكنك تحديد fsync لاستخدام استدعاء النظام الذي يحمل نفس الاسم، أو تحديد الكتابة فقط لاستخدام إعادة الكتابة لذاكرة التخزين المؤقت.

  • للحماية من الثغرات الأمنية التي تتلاعب باستبدال المستخدمين الآخرين لأدلة .git إلى أقسام مشتركة، تم تعزيز التحقق من مالك المستودع. أصبح تنفيذ أي أوامر git مسموحًا به الآن فقط في أدلة ".git" الخاصة بهم. إذا كان الدليل الذي يحتوي على المستودع ينتمي إلى مستخدم آخر، فسيتم عرض خطأ بشكل افتراضي. يمكن تعطيل هذا السلوك باستخدام الإعداد Safe.directory.
  • تم استكمال الأمر "git cat-file"، المخصص لإخراج المحتويات المصدر لكائنات Git، بخيار "--batch-command"، الذي يكمل الخيارين "--batch" و"-batch-check" المتوفرين سابقًا أوامر مع القدرة على تحديد نوع الإخراج بشكل تكيفي باستخدام "المحتويات " لعرض المحتوى أو "info " لعرض معلومات حول الكائن. بالإضافة إلى ذلك، يتم دعم الأمر "flush" لمسح المخزن المؤقت للإخراج.
  • إلى الأمر "git ls-tree"، المخصص لإنشاء قائمة بمحتويات شجرة الكائنات، تمت إضافة الخيار "-oid-only" ("-object-only")، على غرار "-name-only" "، مع عرض معرفات الكائنات فقط لتبسيط الاتصال من البرامج النصية. تم أيضًا تنفيذ خيار "--format"، والذي يسمح لك بتحديد تنسيق الإخراج الخاص بك من خلال دمج المعلومات حول الوضع والنوع والاسم والحجم.
  • ينفذ أمر "git bisect run" الكشف عن عدم تعيين علامة الملف القابل للتنفيذ للبرنامج النصي وفي هذه الحالة عرض الأخطاء بالرموز 126 أو 127 (في السابق، إذا تعذر تشغيل البرنامج النصي، تم وضع علامة على جميع المراجعات على أنها بها مشاكل) .
  • تمت إضافة خيار --refetch إلى أمر "git fetch" لجلب جميع الكائنات دون إبلاغ الطرف الآخر بالمحتويات الموجودة بالفعل على النظام المحلي. يمكن أن يكون هذا السلوك مفيدًا للتعافي من حالات الفشل عندما تكون سلامة البيانات المحلية غير مؤكدة.
  • تدعم الآن أوامر "git update-index" و"git checkout-index" و"git read-tree" و"git clean" الفهارس الجزئية (الفهرس المتناثر) لتحسين الأداء وتوفير المساحة في المستودعات التي يتم فيها تنفيذ العمليات الجزئية. (متناثر الخروج).
  • تم تغيير سلوك الأمر "git clone —filter=... —recurse-submodules"، مما يؤدي الآن إلى استنساخ جزئي للوحدات الفرعية (في السابق، عند تنفيذ مثل هذه الأوامر، تم تطبيق المرشح فقط على المحتوى الرئيسي، وكانت الوحدات الفرعية مستنسخة بالكامل دون مراعاة الفلتر).
  • أضاف أمر "git Bundle" دعمًا لتحديد عوامل التصفية لوضع المحتوى بشكل انتقائي، على غرار عمليات الاستنساخ الجزئي.
  • تمت إضافة خيار "--recurse-submodules" إلى أمر "git Branch" لاجتياز الوحدات الفرعية بشكل متكرر.
  • يقدم Userdiff معالجًا جديدًا للغة Kotlin.

المصدر: opennet.ru

إضافة تعليق