إطلاق نظام التحكم بالمصادر الموزعة Git 2.31

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

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

  • تمت إضافة أمر "صيانة git"، والذي يسمح لك بأداء العمل الدوري على الأنظمة التي لا تدعم cron. على سبيل المثال، باستخدام أمر جديد، يمكنك الترتيب لتشغيل عملية تعبئة المستودع بشكل دوري، بحيث لا تضطر إلى الانتظار حتى يتم قفل المستودع عندما يتم تنفيذ الحزم تلقائيًا أثناء تشغيل أوامر مختلفة. يتيح لك أمر "صيانة git" إجراء تحسينات وعمليات للحفاظ على البنية المثالية للمستودع في الخلفية، دون حظر الجلسة التفاعلية - مرة واحدة كل ساعة، يتم العمل لتنزيل كائنات جديدة بشكل استباقي من المستودع البعيد وتحديث ملف برسم بياني للالتزام، وتبدأ عملية تعبئة المستودع كل ليلة.
  • تمت إضافة دعم للحفاظ على فهرس عكسي (revindex) على القرص لملفات الحزمة. تذكر أن Git يخزن جميع البيانات في شكل كائنات موجودة في ملفات منفصلة. لزيادة كفاءة العمل مع المستودع، يتم وضع الكائنات بالإضافة إلى ذلك في ملفات الحزمة، حيث يتم تقديم المعلومات في شكل دفق من الكائنات التي تتبع بعضها البعض (يتم استخدام تنسيق مماثل عند نقل الكائنات باستخدام git fetch و git Push الأوامر). لكل ملف حزمة، يتم إنشاء ملف فهرس (.idx)، والذي يسمح لك بتحديد الإزاحة في ملف الحزمة الذي يتم تخزين الكائن المحدد فيه بسرعة كبيرة باستخدام معرف الكائن. تم تقديم الفهرس العكسي (.rev) في Git 2.31، وهو يهدف إلى تحسين عملية تحديد معرف الكائن من خلال المعلومات المتعلقة بوضع الكائن في ملف الحزمة.

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

    على سبيل المثال، كانت عملية عرض محتويات الكائنات، التي تستخدم فهرسًا مباشرًا، أسرع 62 مرة من عملية عرض حجم الكائنات، التي لم تتم فهرسة بيانات الموضع إلى الكائن لها. وبعد استخدام الفهرس العكسي، بدأت هذه العمليات تستغرق نفس الوقت تقريبًا. تسمح لك الفهارس العكسية أيضًا بتسريع عمليات إرسال الكائنات عند تنفيذ أوامر الجلب والدفع عن طريق نقل البيانات الجاهزة من القرص مباشرةً. افتراضيًا، لا يتم إنشاء الفهارس العكسية؛ ولإنشاءها، تحتاج إلى تمكين الإعداد "git config pack.writeReverseIndex true" ثم حزم المستودع باستخدام الأمر "git repack -Ad".

  • تمت إضافة تحسينات في الأداء استنادًا إلى المظهر في تنسيق ملف الرسم البياني للالتزام، المستخدم لتحسين الوصول إلى المعلومات حول الالتزامات، والبيانات الجديدة حول رقم إنشاء الالتزام، والتي يمكن استخدامها لتسريع العمليات الإضافية مع الالتزامات.
  • تمت إضافة خيارات لإعادة تعريف اسم الفرع الرئيسي المستخدم افتراضيًا في المستودعات الجديدة (إعداد init.defaultBranch). عند الوصول إلى المستودعات الخارجية، يحاول git التحقق من الفرع المشار إليه بواسطة HEAD، أي. إذا كان الخادم الخارجي يستخدم الفرع "الرئيسي" بشكل افتراضي، فستحاول عملية "git clone" التحقق من "الرئيسي" محليًا. يدعم Git 2.31 الآن هذا النوع من الخروج للمستودعات الفارغة. على سبيل المثال، عند استنساخ مستودع جديد محليًا قبل إضافة التصحيحات الأولى إليه، ستحتوي النسخة المحلية الآن على اسم المنبع الافتراضي المعين على الخادم الخارجي.
  • تمت إضافة خيار --disk-usage إلى أمر "git rev-list" لتقديم ملخص لحجم الكائنات.
  • تحسبًا للتغيير القادم في الواجهة الخلفية للدمج، تم تحسين اكتشاف إعادة التسمية بشكل كبير.
  • تم إيقاف دعم مكتبة التعبيرات العادية PCRE1 القديمة.
  • من الممكن حظر استخدام الروابط المختصرة بالقوة، بغض النظر عن خوارزمية التجزئة. يتم تمكين الحظر عن طريق تعيين القيمة "لا" للمعلمة core.abbrev.
  • تمت إضافة خيار "--path-format=(absolute|relative)" إلى الأمر "git rev-parse" لتحديد ما إذا كان يجب إخراج المسارات النسبية أو المطلقة بشكل صريح.
  • تسهل البرامج النصية لإكمال Bash إضافة قواعد إكمال لأوامر "git" الفرعية الخاصة بك.
  • تمت إضافة خيار --stdin إلى أمر "git Bundle" لقراءة المراجع من دفق الإدخال القياسي.
  • تمت إضافة خيار جديد إلى أمر "git log": "--diff-merges=" "
  • تمت إضافة خيار "--deduplicatecan" إلى أمر "git ls-files" لإزالة المخرجات المكررة.
  • تمت إضافة أقنعة جديدة لاستبعاد مجموعة من الالتزامات - " ^!" و " ^- "
  • تمت إضافة خيارات "--left-only" و"--right-only" إلى أمر "git range-diff" لإظهار جانب واحد فقط من النطاق الذي تتم مقارنته.
  • تمت إضافة خيارات --skip-to= إلى أوامر "git diff" و"git log". " و" - تدوير إلى = » للتخطي أو الانتقال إلى نهاية مسارات البداية.
  • تمت إضافة خيار "--skip-to=" إلى أمر "git difftool". » لاستئناف جلسة متقطعة من مسار عشوائي.
  • تم تحديث قواعد السلوك، التي تحدد المبادئ الأساسية لحل حالات الصراع بين المطورين، إلى الإصدار 2.0 (تم استخدام الإصدار 1.4 سابقًا).

    المصدر: opennet.ru

إضافة تعليق