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

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

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

  • تم التبديل إلى الوضع الافتراضي الإصدار الثاني بروتوكول اتصال Git، والذي يتم استخدامه عندما يتصل العميل عن بعد بخادم Git. يتميز الإصدار الثاني من البروتوكول بتوفير القدرة على تصفية الفروع والعلامات على جانب الخادم، وإرجاع قائمة مختصرة من الروابط إلى العميل. في السابق، كان أي أمر سحب يرسل دائمًا إلى العميل القائمة الكاملة للمراجع في المستودع بأكمله، حتى عندما كان العميل يقوم بتحديث فرع واحد فقط أو يتحقق من أن نسخته من المستودع محدثة. هناك ابتكار ملحوظ آخر وهو القدرة على إضافة إمكانات جديدة إلى البروتوكول عندما تصبح الوظائف الجديدة متاحة في مجموعة الأدوات. يظل رمز العميل متوافقًا مع البروتوكول القديم ويمكنه الاستمرار في العمل مع كل من الخوادم الجديدة والقديمة، ويعود تلقائيًا إلى الإصدار الأول إذا كان الخادم لا يدعم الإصدار الثاني.
  • تمت إضافة خيار "-show-scope" إلى أمر "git config"، مما يسهل تحديد المكان الذي يتم فيه تحديد إعدادات معينة. يتيح لك Git تحديد الإعدادات في أماكن مختلفة: في المستودع (.git/info/config)، وفي دليل المستخدم (~/.gitconfig)، وفي ملف التكوين على مستوى النظام (/etc/gitconfig)، ومن خلال الأمر خيارات الخط ومتغيرات البيئة. عند تنفيذ "git config"، يكون من الصعب جدًا فهم مكان تحديد الإعداد المطلوب بالضبط. لحل هذه المشكلة، كان خيار "--show-origin" متاحًا، لكنه يظهر فقط المسار إلى الملف الذي تم تعريف الإعداد فيه، وهو مفيد إذا كنت تنوي تحرير الملف، ولكنه لا يساعد إذا كنت تحتاج إلى تغيير القيمة من خلال "git config" باستخدام الخيارات "--system" أو "--global" أو "-local". يعرض الخيار الجديد "--show-scope" سياق تعريف المتغير ويمكن استخدامه مع -show-origin:

    $ git --list --show-scope --show-origin
    الملف العمومي:/home/user/.gitconfig diff.interhunkcontext=1
    الملف العام:/home/user/.gitconfig Push.default=current
    […] الملف المحلي: .git/config Branch.master.remote=origin
    الملف المحلي:.git/config Branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    عرض الاختلاف العالمي 35
    فرق محلي. لون متحرك عادي

    $ git config --global --unset diff.statgraphwidth

  • في إعدادات الربط أوراق اعتماد يُسمح باستخدام الأقنعة في عناوين URL. يمكن تعيين أي إعدادات HTTP وبيانات اعتماد في Git لجميع الاتصالات (http.extraHeader، credential.helper) وللاتصالات المستندة إلى URL (credential.https://example.com.helper، credential.https: //example. com.helper). حتى الآن، كان مسموحًا بأحرف البدل مثل *.example.com فقط لإعدادات HTTP، ولكن لم تكن مدعومة لربط بيانات الاعتماد. في Git 2.26، تم التخلص من هذه الاختلافات، على سبيل المثال، لربط اسم مستخدم بجميع النطاقات الفرعية، يمكنك الآن تحديد:

    [بيانات الاعتماد "https://*.example.com"]

    اسم المستخدم = taylorr

  • يستمر توسيع الدعم التجريبي للاستنساخ الجزئي (الاستنساخ الجزئي)، مما يسمح لك بنقل جزء فقط من البيانات والعمل مع نسخة غير كاملة من المستودع. يضيف الإصدار الجديد أمرًا جديدًا "git sparse-checkout add"، والذي يسمح لك بإضافة أدلة فردية لتطبيق عملية "الخروج" على جزء فقط من شجرة العمل، بدلاً من إدراج جميع هذه الأدلة مرة واحدة من خلال الأمر "git مجموعة الخروج المتفرقة" (يمكنك إضافة دليل واحد تلو الآخر، دون إعادة تحديد القائمة بأكملها في كل مرة).
    على سبيل المثال، لاستنساخ مستودع git/git دون الالتزام بالنقط، وقصر الخروج على الدليل الجذر لنسخة العمل فقط، ووضع علامات منفصلة على الخروج للدلائل "t" و"Documentation"، يمكنك تحديد:

    $ git clone --filter=blob:none --sparse [البريد الإلكتروني محمي]:git/git.git

    $ مؤتمر نزع السلاح بوابة
    $ git متفرق الخروج init --cone

    $ git متفرق الخروج إضافة t
    ....
    $ git متفرق الخروج إضافة الوثائق
    ....
    $ git قائمة الخروج المتفرقة
    توثيق
    t

  • تم تحسين أداء الأمر "git grep"، المستخدم للبحث في كل من المحتويات الحالية للمستودع والمراجعات التاريخية، بشكل ملحوظ. لتسريع البحث، كان من الممكن فحص محتويات شجرة العمل باستخدام خيوط متعددة ("git grep –threads")، ولكن البحث في المراجعات التاريخية كان بخيط واحد. الآن تمت إزالة هذا القيد من خلال تنفيذ القدرة على موازنة عمليات القراءة من تخزين الكائنات. افتراضيًا، يتم تعيين عدد الخيوط مساويًا لعدد مراكز وحدة المعالجة المركزية، وهو ما لا يتطلب الآن في معظم الحالات تعيين خيار "-threads" بشكل صريح.
  • تمت إضافة دعم للإكمال التلقائي لإدخال الأوامر الفرعية والمسارات والروابط والوسائط الأخرى لأمر "git Worktree"، والذي يسمح لك بالعمل مع عدة نسخ عمل من المستودع.
  • تمت إضافة دعم للألوان الزاهية التي تحتوي على تسلسلات هروب ANSI. على سبيل المثال، في إعدادات ألوان التمييز "git config –color" أو "git diff –color-moved" يمكنك تحديد "%C(brightblue)" عبر خيار "--format" للون الأزرق الساطع.
  • تمت إضافة نسخة جديدة من البرنامج النصي fsmonitor-watchman، وتوفير التكامل مع الآلية مراقب الفيسبوك لتسريع تتبع تغييرات الملفات وظهور الملفات الجديدة. بعد التحديث مطلوب بوابة استبدال ربط في المستودع.
  • تمت إضافة تحسينات لتسريع النسخ الجزئية عند استخدام الصور النقطية
    (آلات الصور النقطية) لتجنب البحث الكامل عن كافة الكائنات عند تصفية المخرجات. يتم الآن التحقق من النقط (-filter=blob:none و-filter=blob:limit=n) أثناء الاستنساخ الجزئي
    أسرع بكثير. أعلن GitHub عن تصحيحات بهذه التحسينات والدعم التجريبي للاستنساخ الجزئي.

  • تم نقل الأمر "git rebase" إلى واجهة خلفية مختلفة، باستخدام آلية "الدمج" الافتراضية (المستخدمة سابقًا لـ "rebase -i") بدلاً من "patch+apply". تختلف الواجهات الخلفية في بعض النواحي الصغيرة، على سبيل المثال، بعد مواصلة العملية بعد حل التعارض (git rebase --continue)، تعرض الواجهة الخلفية الجديدة تحرير رسالة الالتزام، بينما تستخدم الواجهة القديمة الرسالة القديمة ببساطة. للعودة إلى السلوك القديم، يمكنك استخدام الخيار "--apply" أو تعيين متغير التكوين "rebase.backend" على "apply".
  • تم اختصار مثال لمعالج معلمات المصادقة المحددة عبر .netrc إلى نموذج مناسب للاستخدام خارج الصندوق.
  • تمت إضافة الإعداد gpg.minTrustLevel لتعيين الحد الأدنى لمستوى الثقة للعناصر المختلفة التي تقوم بالتحقق من التوقيع الرقمي.
  • تمت إضافة خيار "-pathspec-from-file" إلى "git rm" و"git stash".
  • استمر تحسين مجموعات الاختبار استعدادًا للانتقال إلى خوارزمية التجزئة SHA-2 بدلاً من SHA-1.

المصدر: opennet.ru

إضافة تعليق