انتشار سیستم کنترل منبع توزیع شده Git 2.26

در دسترس انتشار یک سیستم کنترل منبع توزیع شده گیت 2.26.0. Git یکی از محبوب‌ترین، قابل اعتمادترین و با کارایی‌ترین سیستم‌های کنترل نسخه است که ابزار توسعه غیرخطی انعطاف‌پذیر مبتنی بر شاخه‌بندی و ادغام را ارائه می‌کند. برای اطمینان از یکپارچگی تاریخچه و مقاومت در برابر تغییرات ماسبق، از هش ضمنی کل تاریخچه قبلی در هر commit استفاده می‌شود؛ همچنین می‌توان تگ‌ها و تعهدات فردی را با امضای دیجیتالی توسعه‌دهندگان تأیید کرد.

در مقایسه با نسخه قبلی، نسخه جدید شامل 504 تغییر بود که با مشارکت 64 توسعه دهنده تهیه شد که 12 نفر از آنها برای اولین بار در توسعه شرکت کردند. اصلی نوآوری ها:

  • پیش فرض تغییر کرده است نسخه دوم پروتکل ارتباطی Git، که زمانی که یک کلاینت از راه دور به سرور Git متصل می شود، استفاده می شود. نسخه دوم پروتکل به دلیل ارائه قابلیت فیلتر کردن شاخه ها و برچسب ها در سمت سرور و بازگرداندن لیست کوتاه شده لینک ها به مشتری قابل توجه است. قبلاً، هر دستور pull همیشه لیست کامل مراجع را در کل مخزن برای مشتری ارسال می کرد، حتی زمانی که مشتری فقط یک شعبه را به روز می کرد یا بررسی می کرد که کپی مخزن به روز است. یکی دیگر از نوآوری های قابل توجه، امکان افزودن قابلیت های جدید به پروتکل با در دسترس قرار گرفتن قابلیت های جدید در جعبه ابزار است. کد کلاینت با پروتکل قدیمی سازگار است و می تواند با سرورهای جدید و قدیمی به کار خود ادامه دهد و در صورتی که سرور نسخه دوم را پشتیبانی نکند به طور خودکار به نسخه اول برمی گردد.
  • گزینه "-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.*'
    جهانی diff.statgraphwidth 35
    محلی diff.colormoved plain

    $ 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"]

    نام کاربری = ttaylorr

  • گسترش پشتیبانی آزمایشی برای شبیه‌سازی جزئی (کلون‌های جزئی) ادامه دارد و به شما امکان می‌دهد تنها بخشی از داده‌ها را منتقل کنید و با یک نسخه ناقص از مخزن کار کنید. نسخه جدید دستور جدیدی به نام "git sparse-checkout add" اضافه می کند که به شما امکان می دهد به جای فهرست کردن همه این دایرکتوری ها به طور همزمان از طریق دستور "git"، دایرکتوری های فردی را برای اعمال عملیات "checkout" تنها به بخشی از درخت کاری اضافه کنید. مجموعه پراکنده پرداخت" (شما می توانید یک به یک فهرست را اضافه کنید، بدون اینکه هر بار کل لیست را دوباره مشخص کنید).
    به عنوان مثال، برای کلون کردن یک مخزن git/git بدون commit کردن blobs، محدود کردن checkout فقط به دایرکتوری اصلی کپی کاری، و علامت گذاری جداگانه checkout برای دایرکتوری های "t" و "Documentation"، می توانید مشخص کنید:

    $ git clone --filter=blob:none --sparse [ایمیل محافظت شده]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git پراکنده پرداخت اضافه t
    ....
    $ git sparse-checkout اضافه کردن مستندات
    ....
    $ git لیست پرداخت پراکنده
    مستندات
    t

  • عملکرد دستور "git grep" که برای جستجوی محتوای فعلی مخزن و ویرایش های تاریخی استفاده می شود، به طور قابل توجهی بهبود یافته است. برای سرعت بخشیدن به جستجو، امکان اسکن محتویات درخت کار با استفاده از موضوعات متعدد ("git grep-threads") وجود داشت، اما جستجو در بازنگری های تاریخی تک رشته ای بود. اکنون این محدودیت با اجرای قابلیت موازی کردن عملیات خواندن از ذخیره‌سازی شی حذف شده است. به‌طور پیش‌فرض، تعداد رشته‌ها برابر با تعداد هسته‌های CPU تنظیم می‌شود، که اکنون در بیشتر موارد نیازی به تنظیم صریح گزینه «-threads» نیست.
  • پشتیبانی از تکمیل خودکار ورودی دستورات فرعی، مسیرها، پیوندها و سایر آرگومان های دستور "git worktree" اضافه شده است که به شما امکان می دهد با چندین نسخه کار از مخزن کار کنید.
  • اضافه شدن پشتیبانی از رنگ های روشن که دارای توالی فرار ANSI هستند. به عنوان مثال، در تنظیمات رنگ های هایلایت «git config –color» یا «git diff –color-moved» می توانید «%C(brightblue)» را از طریق گزینه «--format» برای آبی روشن مشخص کنید.
  • نسخه جدید اسکریپت اضافه شد fsmonitor-watchman، یکپارچگی با مکانیسم را فراهم می کند نگهبان فیس بوک برای سرعت بخشیدن به ردیابی تغییرات فایل و ظاهر شدن فایل های جدید. پس از به روز رسانی git مورد نیاز است جایگزین کنید قلاب در مخزن.
  • بهینه سازی اضافه شده برای سرعت بخشیدن به کلون جزئی هنگام استفاده از بیت مپ
    (ماشین بیت مپ) برای جلوگیری از جستجوی کامل همه اشیا هنگام فیلتر کردن خروجی. بررسی حباب ها (—filter=blob:none و —filter=blob:limit=n) در حین شبیه سازی جزئی اکنون انجام می شود
    به طور قابل توجهی سریعتر GitHub وصله هایی را با این بهینه سازی ها و پشتیبانی آزمایشی برای شبیه سازی جزئی اعلام کرد.

  • دستور "git rebase" به جای "patch+apply" با استفاده از مکانیزم پیش‌فرض ادغام (که قبلاً برای "rebase -i" استفاده می‌شد) به باطن دیگری منتقل شده است. بک‌اندها از جهات کوچکی متفاوت هستند، برای مثال، پس از ادامه عملیات پس از حل یک تضاد (git rebase --continue)، باطن جدید پیشنهاد می‌کند تا پیام commit را ویرایش کند، در حالی که نسخه قدیمی به سادگی از پیام قدیمی استفاده می‌کند. برای بازگشت به رفتار قبلی، می‌توانید از گزینه «--apply» استفاده کنید یا متغیر پیکربندی «rebase.backend» را روی «apply» تنظیم کنید.
  • نمونه ای از یک کنترل کننده برای پارامترهای احراز هویت مشخص شده از طریق netrc. به فرمی مناسب برای استفاده خارج از جعبه کاهش یافته است.
  • تنظیم gpg.minTrustLevel را برای تنظیم حداقل سطح اعتماد برای عناصر مختلف که تأیید امضای دیجیتال را انجام می دهند، اضافه کرد.
  • گزینه "--pathspec-from-file" به "git rm" و "git stash" اضافه شد.
  • بهبود مجموعه های آزمایشی در آماده سازی برای انتقال به الگوریتم هش SHA-2 به جای SHA-1 ادامه یافت.

منبع: opennet.ru

اضافه کردن نظر