إطلاق نظام التحكم في المصدر الموزع Git 2.22

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

مقارنة بالإصدار السابق ، تم قبول 745 تغييرًا في الإصدار الجديد ، الذي تم إعداده بمشاركة 74 مطورًا ، شارك 18 منهم في التطوير لأول مرة. رئيسي الابتكارات:

  • متوفر منذ الإصدار 1.18، ويحل وضع إعادة الالتزام الجديد "git rebase --rebase-merges" محل خيار "--preserve-merges" القديم، والذي تم إهماله الآن. يتم استخدام عملية "git rebase" لاستبدال سلسلة من الالتزامات بالتزام أساسي جديد، على سبيل المثال، لنقل فرع منفصل يقوم بتطوير بعض الميزات الجديدة إلى الحالة الحالية للفرع الرئيسي، والتي تتضمن الإصلاحات المضافة بعد الفرع :

    o - o - o (مميزاتي)

    /

    س - س - س - س - س (سيد)

    o - o - o (مميزاتي)

    /

    س - س - س - س - س (سيد)

    للحفاظ على بنية الفرع في فرع مُرحّل، كان من الممكن استخدام خيار "--preserve-merges" سابقًا، والذي، عند تشغيله في الوضع التفاعلي (git rebase -i --preserve-merges)، يسمح بتحرير سجل الالتزام، ولكن لا يضمن الحفاظ الكامل على هيكل المستودع. يتيح لك وضع "--rebase-merges" الجديد الحفاظ على بنية التغييرات في الفرع الذي يتم ترحيله، مع توفير نطاق كامل من العمليات التفاعلية، بما في ذلك عمليات الحذف وإعادة التجميع وإعادة التسمية.

    على سبيل المثال، "--rebase-merges" يسمح إعادة تحميل الالتزامات من فرع منفصل إلى فرع رئيسي أحدث، مع الحفاظ على بنية الفرع في الفرع المُرحّل، وإجراء بعض التغييرات على ملاحظات الالتزام بسرعة.

  • تمت إضافة دعم لإنشاء فرع جديد بناءً على نتيجة تحديد قاعدة الدمج لفرعين آخرين (قاعدة الدمج، الارتباط بسلف مشترك) باستخدام الإنشاءات "git Branch new A...B" و"git checkout -b new" A...B"، حيث يتضمن "A ...B" تحديد قاعدة دمج بين التزامين محددين، على غرار الطريقة التي يقوم بها "git checkout A...B" بتحويل HEAD إلى الالتزام الأساسي و"diff A. ..B" يُظهر التغييرات بين الالتزام "B" ونفس الالتزام "A" ".

    على سبيل المثال، عند العمل على فرع منفصل لميزاتي، يمكن استخدام هذه الميزة عندما تريد البدء من فرع مختلف، على سبيل المثال، من نفس المكان في الفرع الرئيسي الذي تم سحب فرع ميزتي منه. في السابق، كان هذا يتطلب فحص سجل التغيير يدويًا، وهو أمر غير مناسب إذا كان لديك سجل كبير من التغييرات، ثم تشغيل "git merge-base master my-feature" لحساب تجزئة قاعدة الدمج بين فرعي master وmy-feature وإنشاء فرع جديد بالنسبة إلى السلف المشترك "git Branch my-other-feature hash." في Git 2.22، يمكنك استخدام بناء الجملة "git Branch my-other-feature A...B" لإنشاء فرع متعلق بقاعدة الدمج لفرعين آخرين؛

  • تمت إضافة خيار "git Branch --show-current" لعرض اسم الفرع الذي تم الحصول عليه أثناء عملية الدفع؛
  • تمت إضافة خيار "git checkout —no-overlay — dir"، والذي يسمح، عند إجراء عملية الخروج، بإحضار محتويات دليل dir إلى نموذج يتوافق تمامًا مع حالة الفرع الرئيسي. على سبيل المثال، إذا كان هناك ملف في النسخة المحلية من دليل dir غير موجود في الفرع الرئيسي، فسيتم تركه بشكل افتراضي عند تنفيذ "git checkout master - dir"، وإذا كان "--no-overlay" تم تحديد الخيار، وسيتم حذفه؛
  • يستخدم الأمر "git diff" واجهة برمجة تطبيقات عالمية لتحليل الخيارات، مما يجعل من الممكن توحيد معالجة الخيارات مع أدوات git المساعدة الأخرى. على سبيل المثال، في "git diff"، أصبحت جميع الخيارات الآن لها خصومها ("--function-context" و"--no-function-context")؛
  • تمت إضافة القدرة على تصفية العلامات الموسعة المرفقة بالالتزامات في مخرجات "git log" ("المقطورة" - علامات معلومات إضافية، مثل تم التوقيع بواسطة والتأليف المشترك). من الممكن تصفية التسميات حسب كل من المفتاح والقيمة، على سبيل المثال:
    "git log --pretty="%(trailers:key=Reviewed-by,valueonly)";

  • تمت إضافة محرك تتبع جديد، Trace2، مما يوفر تنسيق إخراج أكثر مرونة وتنظيمًا. يسمح لك Trace2 بجمع القياس عن بعد حول العمليات المنفذة وبيانات الأداء لإجراء تحليل وتصحيح أكثر تفصيلاً (يتم تعيين المعالج من قبل المستخدم، ولا يتم إرسال أي بيانات خارجيًا)؛
  • أصبح تقرير "git bisect" أكثر قابلية للقراءة، حيث يتم الآن تسليط الضوء بشكل أكثر وضوحًا على الالتزامات الإشكالية ويتم عرض إحصائيات ملخصة حول التغييرات لكل ملف (على مستوى عدد الأسطر التي تم تغييرها)؛
  • تمت إعادة صياغة الأساليب الاستدلالية لتحديد عمليات إعادة تسمية الدليل لإزالة التثبيت الخاطئ لملصقات إعادة التسمية. عند الشك، يتم الآن وضع علامة على هذه الدلائل على أنها متضاربة؛
  • يتم عرض تحذير عند محاولة تثبيت علامة على علامة أخرى، وهو ما يتم عادةً عن طريق الخطأ ويمكن أن يؤدي إلى تعيين العلامة على التزام خاطئ (على سبيل المثال، إنشاء مثل "git tag -f -m "updated message" my-tag1 my-tag2″ سيؤدي إلى إنشاء علامة على العلامة القديمة، بينما توقع المطور تثبيت العلامة الجديدة على الالتزام المشار إليه بالعلامة القديمة)؛
  • يتم تمكين الإنشاء لمستودعات الصور النقطية (بنية "الصور النقطية القابلة للوصول" المستندة إلى القرص)، والتي تخزن بيانات حول مجموعات من الكائنات المتاحة لكل التزام وتسمح لك بتحديد وجود كائن أساسي بسرعة. تعمل هذه البنية على تقليل وقت تنفيذ عمليات استرجاع البيانات (git fetch) بشكل كبير.

المصدر: opennet.ru

إضافة تعليق