انتشار کنترل منبع Git 2.35

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

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

  • امکانات استفاده از کلیدهای SSH برای امضای دیجیتالی اشیاء Git گسترش یافته است. برای محدود کردن مدت اعتبار چندین کلید، پشتیبانی از دستورالعمل‌های OpenSSH "معتبر قبل" و "معتبر بعد" اضافه شده است، که با آن می‌توانید پس از چرخاندن کلید توسط یکی از توسعه‌دهندگان، از کار صحیح با امضاها اطمینان حاصل کنید. قبل از این، در جداسازی امضاها توسط کلید قدیم و جدید مشکل وجود داشت - اگر کلید قدیمی را حذف کنید، تأیید امضاهای ساخته شده با آن غیرممکن خواهد بود و اگر آن را رها کنید، این امکان وجود خواهد داشت که با کلید قدیمی که قبلا با کلید دیگری جایگزین شده است، امضاهای جدیدی ایجاد کنید. با استفاده از معتبر-قبل و معتبر-بعد می توانید محدوده کلیدها را بر اساس زمان ایجاد امضا جدا کنید.
  • در تنظیمات merge.conflictStyle، که به شما امکان می دهد حالت نمایش اطلاعات مربوط به تضادها را در طول ادغام انتخاب کنید، پشتیبانی از حالت "zdiff3" ظاهر شده است که تمام خطوط استاندارد مشخص شده در ابتدا یا انتهای تضاد را به خارج از تضاد منتقل می کند. منطقه، که امکان ارائه فشرده تر اطلاعات را فراهم می کند.
  • حالت "--staged" به دستور "git stash" اضافه شده است، که به شما امکان می دهد فقط تغییرات اضافه شده به ایندکس را پنهان کنید، برای مثال در شرایطی که باید به طور موقت برخی از تغییرات پیچیده را به تعویق بیندازید تا ابتدا آنچه از قبل آماده است را اضافه کنید و بعد از مدتی به بقیه بپردازید. این حالت شبیه دستور "git commit" است و فقط تغییرات اعمال شده در ایندکس را می نویسد، اما به جای ایجاد یک commit جدید در "git stash —staged"، نتیجه در ناحیه موقت stash ذخیره می شود. هنگامی که تغییرات مورد نیاز است، می توان آنها را با دستور "git stash pop" برگرداند.
  • یک فرمت مشخص کننده جدید به دستور "git log" اضافه شده است، "--format=%(describe)"، که به شما امکان می دهد خروجی "git log" را با خروجی دستور "git describe" ترکیب کنید. پارامترهای "git describe" مستقیماً در داخل مشخص کننده مشخص می شوند ("-format=%(describe:match= ، حذف = )")، که در آن می توانید برچسب های کوتاه شده ("—format=%(describe:tags= )") و تعداد کاراکترهای هگزا دسیمال را برای شناسایی اشیاء پیکربندی کنید ("—format=%(describe:abbrev= )"). به عنوان مثال، برای فهرست کردن 8 commit آخر که تگ‌های آنها تگ کاندید انتشار ندارند، و با تعیین شناسه‌های 8 کاراکتری، می‌توانید از دستور: $ git log -8 —format='%(describe:exclude=*-rc استفاده کنید. *,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-v643-2 v95-94-056-2.34.1. 642-gb56bd 95bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640- gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • تنظیمات user.signingKey اکنون از انواع جدیدی از کلیدها پشتیبانی می کند که محدود به نوع "ssh-" و تعیین مسیر کامل فایل به کلید نیستند. انواع جایگزین با استفاده از پیشوند "key::" مشخص می شوند، برای مثال "key::ecdsa-sha2-nistp256" برای کلیدهای ECDSA.
  • سرعت ایجاد لیستی از تغییرات در حالت «—هیستوگرام» و همچنین هنگام استفاده از گزینه «—color-moved-ws» که برجسته سازی فضاها را در یک تفاوت رنگ کنترل می کند، به میزان قابل توجهی افزایش یافته است.
  • دستور "git jump" که برای ارائه اطلاعات به Vim در مورد پرش دقیق به موقعیت مورد نظر در فایل هنگام تجزیه تضادهای ادغام، مشاهده تفاوت‌ها یا انجام عملیات جستجو استفاده می‌شود، توانایی محدود کردن تضادهای ادغام تحت پوشش را فراهم می‌کند. به عنوان مثال، برای محدود کردن عملیات فقط به دایرکتوری "foo"، می توانید "git jump merge - foo" را مشخص کنید، و برای حذف فهرست "Documentation" از پردازش - "git jump merge - ':^Documentation'" را مشخص کنید.
  • کار برای استاندارد کردن استفاده از نوع "size_t" به جای "unsigned long" برای مقادیر نشان دهنده اندازه اشیا انجام شده است، که امکان استفاده از فیلترهای "پاک" و "لکه‌دار" را با فایل‌های بزرگتر از 4 گیگابایت فراهم کرد. در همه پلتفرم‌ها، از جمله پلتفرم‌هایی با مدل داده LLP64، نوع "unsigned long" که در آن به 4 بایت محدود شده است.
  • گزینه "-empty=(stop|drop|keep)" به دستور "git am" اضافه شده است که به شما امکان می دهد رفتار پیام های خالی که حاوی وصله نیستند را هنگام تجزیه وصله ها از صندوق پستی انتخاب کنید. مقدار "stop" کل عملیات وصله را خاتمه می دهد، "drop" یک پچ خالی را رد می کند و "keep" یک commit خالی ایجاد می کند.
  • به دستورات "git reset"، "git diff"، "git blame"، "git fetch"، "git pull" و "git ls-files" برای بهبود عملکرد و صرفه جویی در فضا، پشتیبانی از ایندکس های جزئی (شاخص پراکنده) اضافه شده است. مخازن، که در آن عملیات شبیه سازی جزئی (پراکنده چک) انجام می شود.
  • دستور "git sparse-checkout init" منسوخ شده است و باید با "git sparse-checkout set" جایگزین شود.
  • اضافه شدن اجرای اولیه یک Backend جدید "reftable" برای ذخیره مراجعی مانند شاخه ها و برچسب ها در مخزن. باطن جدید از ذخیره سازی بلوک استفاده شده توسط پروژه JGit استفاده می کند و برای ذخیره تعداد بسیار زیادی از مراجع بهینه شده است. Backend هنوز با سیستم refs یکپارچه نشده است و برای استفاده عملی آماده نیست.
  • پالت رنگ دستور "git grep" برای مطابقت با ابزار GNU grep تنظیم شده است.

منبع: opennet.ru

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