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

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

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

  • مکانیسم نمایه های جزئی (شاخص پراکنده)، که تنها بخشی از مخزن را پوشش می دهد، برای استفاده گسترده آماده شده است. نمایه های جزئی می توانند عملکرد را بهبود بخشند و فضا را در مخازنی که عملیات شبیه سازی جزئی (پراکنده پرداخت) انجام می دهند یا با یک کپی ناقص از مخزن کار می کنند، ذخیره کنند. نسخه جدید ادغام ایندکس های جزئی را در دستورات git show، git sparse-checkout و git stash کامل می کند. قابل توجه ترین مزیت عملکرد از استفاده از نمایه های جزئی با دستور git stash مشاهده می شود که در برخی شرایط ۸۰ درصد افزایش سرعت اجرا داشته است.
  • یک مکانیسم جدید "Craft Packs" برای بسته بندی اشیاء غیرقابل دسترسی که در مخزن ارجاع نشده اند (با شاخه ها یا برچسب ها به آنها اشاره نمی شود) پیاده سازی شده است. اشیای غیرقابل دسترس توسط جمع‌آورنده زباله حذف می‌شوند، اما برای جلوگیری از شرایط مسابقه، قبل از حذف برای مدت زمان معینی در مخزن باقی می‌مانند. برای ردیابی دوره وقوع اشیاء غیرقابل دسترسی، باید برچسب هایی را با زمان تغییر اشیاء مشابه به آنها وصل کنید، که اجازه نمی دهد آنها را در یک فایل بسته ذخیره کنید که در آن همه اشیاء دارای زمان تغییر مشترک هستند. پیش از این، ذخیره هر شی در یک فایل جداگانه به مشکلاتی منجر می شد که تعداد زیادی از اشیاء تازه و غیرقابل دسترسی وجود داشت که هنوز واجد شرایط حذف نبودند. مکانیسم پیشنهادی "Craft packs" به شما امکان می دهد تمام اشیاء غیرقابل دسترس را در یک فایل بسته ذخیره کنید و داده ها را در مورد زمان تغییر هر شی در یک جدول جداگانه ذخیره شده در یک فایل با پسوند ".mtimes" منعکس کنید.
  • برای ویندوز و macOS، یک مکانیسم داخلی برای ردیابی تغییرات در سیستم فایل وجود دارد که به شما امکان می‌دهد هنگام انجام عملیاتی مانند «وضعیت git» از تکرار در کل فهرست کاری خودداری کنید. پیش از این، برای ردیابی تغییرات، ابزارهای خارجی برای ردیابی تغییرات در FS، مانند Watchman، می توانست از طریق قلاب متصل شود، اما این نیاز به نصب برنامه ها و پیکربندی اضافی داشت. اکنون عملکرد مشخص شده داخلی است و می توان آن را با دستور "git config core.fsmonitor true" فعال کرد.
  • در دستور "git sparse-checkout"، پشتیبانی از یک جایگزین برای حالت "-cone"، روش تعریف الگوها برای شبیه سازی جزئی، منسوخ اعلام شده است، که در هنگام تعیین بخشی از مخزن که در معرض عملیات شبیه سازی، برای فهرست کردن فایل های فردی با استفاده از نحو ".gitignore"، که اجازه استفاده برای بهینه سازی شاخص های جزئی را نمی دهد.
  • افزایش انعطاف پذیری در پیکربندی فراخوانی fsync() برای هموار کردن تغییرات روی دیسک. پشتیبانی از استراتژی همگام‌سازی دسته‌ای به پارامتر «core.fsyncMethod» اضافه شده است، که اجازه می‌دهد با انباشتن تغییرات در حافظه پنهان Writback، که توسط یک fsync() بازنشانی می‌شود، سرعت کار هنگام نوشتن تعداد زیادی فایل جداگانه افزایش یابد. زنگ زدن. این آزمایش که منجر به اضافه شدن 500 فایل با استفاده از دستور "git add" شد، در 0.15 ثانیه با فعال شدن حالت جدید تکمیل شد، در حالی که فراخوانی fsync() 1.88 ثانیه برای هر فایل و 0.06 ثانیه بدون استفاده از fsync طول کشید.
  • دستورات پیمایش شاخه ای مانند "git log" و "git rev-list" اکنون دارای گزینه "-since-as-filter=X" هستند که به شما امکان می دهد اطلاعات مربوط به commit های قدیمی تر از "X" را فیلتر کنید. برخلاف گزینه «—از آنجا»، دستور جدید به‌عنوان فیلتری اجرا می‌شود که پس از اولین commit قدیمی‌تر از زمان تعیین‌شده، جستجو را متوقف نمی‌کند.
  • در دستور "git remote"، هنگام تعیین پرچم "-v"، اطلاعات مربوط به کلون های جزئی مخزن نمایش داده می شود.
  • تنظیمات "transfer.credentialsInUrl" اضافه شد که می تواند مقادیر "warn"، "die" و "allow" را بگیرد. اگر در پارامتر «Remote. اگر تنظیمات «transfer.credentialsInUrl» روی «die» یا یک اخطار روی «warn» تنظیم شود، اعتبارنامه متن ساده .url، تلاش برای انجام عملیات «واکشی» یا «فشار» با خطا ناموفق خواهد بود.
  • به طور پیش فرض، اجرای جدید حالت تعاملی دستور "git add -i" که از Perl به C بازنویسی شده است، فعال است.

منبع: opennet.ru

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