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

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

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

  • دستورات "git log" و "git show" اکنون دارای گزینه "-remerge-diff" هستند که به شما امکان می دهد تفاوت بین نتیجه کلی ادغام و داده های واقعی منعکس شده در commit را پس از پردازش دستور "merge" نشان دهید. ، که به شما امکان می دهد تغییرات ایجاد شده در نتیجه حل تعارضات ادغام را به وضوح ارزیابی کنید. دستور معمولی "git show" راه حل های مختلف تعارض را فرو می برد و درک تغییرات را دشوار می کند. به عنوان مثال، در تصویر زیر خط "+/-" بدون تورفتگی، آخرین حل اختلاف مربوط به تغییر نام sha1 به oid در نظر در شاخه اول را نشان می دهد، و "+/-" با تورفتگی، اولیه را نشان می دهد. حل تعارض ناشی از ظهور یک آرگومان اضافی در شاخه دوم در تابع dwim_ref().
    انتشار کنترل منبع Git 2.36

    هنگام استفاده از گزینه "--remerge-diff"، تفاوت‌های بین حل تضادها برای هر شاخه اصلی از هم جدا نمی‌شوند، اما تفاوت‌های کلی بین فایلی که تداخل ادغام دارد و فایلی که تضادها را حل کرده است نشان داده می‌شود.

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

  • افزایش انعطاف پذیری در پیکربندی رفتار برای شستشوی حافظه پنهان دیسک از طریق فراخوانی تابع fsync(). پارامتر core.fsyncObjectFiles که قبلاً در دسترس بود به دو متغیر پیکربندی core.fsync و core.fsyncMethod تقسیم شده است که امکان اعمال fsync را نه تنها برای فایل‌های شی (git/objects)، بلکه برای سایر ساختارهای git مانند پیوندها (پیوندها) فراهم می‌کند. git /refs)، reflog و بسته بندی فایل ها.

    با استفاده از متغیر core.fsync، می‌توانید فهرستی از ساختارهای Git داخلی را مشخص کنید که fsync بعد از یک عملیات نوشتن برای آنها فراخوانی می‌شود. متغیر core.fsyncMethod به شما امکان می دهد روشی را برای شستشوی حافظه پنهان انتخاب کنید، به عنوان مثال، می توانید fsync را برای استفاده از فراخوانی سیستمی به همین نام انتخاب کنید، یا برای استفاده از pagecache writeback، writeout-only را مشخص کنید.

  • برای محافظت در برابر آسیب‌پذیری‌هایی که جایگزینی سایر کاربران از دایرکتوری‌های .git در بخش‌های مشترک را دستکاری می‌کنند، تأیید مالک مخزن تقویت شده است. اجرای هر دستور git اکنون فقط در دایرکتوری های ".git" خودش مجاز است. اگر دایرکتوری با مخزن متعلق به کاربر دیگری باشد، به طور پیش فرض یک خطا نمایش داده می شود. این رفتار را می توان با استفاده از تنظیمات safe.directory غیرفعال کرد.
  • دستور "git cat-file" که برای خروجی محتوای منبع اشیاء Git در نظر گرفته شده است، با گزینه "--batch-command" تکمیل شده است، که مکمل "--batch" و "--batch-check" قبلی موجود است. دستورات ” با قابلیت انتخاب تطبیقی ​​نوع خروجی با استفاده از ” contents <object>” برای نمایش محتوا یا “info <object>” برای نمایش اطلاعات مربوط به شیء. علاوه بر این، دستور "flush" برای شستشوی بافر خروجی پشتیبانی می شود.
  • به دستور "git ls-tree" که برای تولید فهرستی از محتویات درخت شیء در نظر گرفته شده است، گزینه "—oid-only" ("-object-only") مشابه "-name-only" اضافه شده است. "، نمایش تنها شناسه های شی برای ساده کردن تماس از اسکریپت ها. همچنین گزینه "--format" پیاده سازی شده است که به شما امکان می دهد فرمت خروجی خود را با ترکیب اطلاعات در مورد حالت، نوع، نام و اندازه تعریف کنید.
  • دستور "git bisect run" تشخیص عدم تنظیم پرچم فایل اجرایی برای یک اسکریپت و در این مورد نمایش خطاها با کدهای 126 یا 127 را اجرا می کند (قبلاً اگر اسکریپت اجرا نمی شد، تمام ویرایش ها به عنوان دارای مشکل علامت گذاری می شدند) .
  • یک گزینه --refetch را به دستور "git fetch" اضافه کرد تا همه اشیا را بدون اطلاع طرف مقابل در مورد محتویات موجود در سیستم محلی واکشی کند. هنگامی که یکپارچگی داده های محلی نامشخص است، این رفتار می تواند برای بازیابی از خرابی ها مفید باشد.
  • دستورات "git update-index"، "git checkout-index"، "git read-tree" و "git clean" اکنون از نمایه های جزئی (شاخص پراکنده) برای بهبود عملکرد و صرفه جویی در فضا در مخازنی که عملیات جزئی انجام می شود، پشتیبانی می کنند. (پرداخت پراکنده).
  • رفتار دستور "git clone —filter=... —recurse-submodules" تغییر کرده است که اکنون منجر به شبیه سازی جزئی زیر ماژول ها می شود (قبلاً هنگام اجرای چنین دستوراتی، فیلتر فقط برای محتوای اصلی اعمال می شد و زیر ماژول ها اعمال می شدند. به طور کامل بدون در نظر گرفتن فیلتر کلون شد).
  • دستور "git bundle" پشتیبانی برای تعیین فیلترها برای قرار دادن انتخابی محتوا، مشابه عملیات شبیه سازی جزئی، اضافه کرده است.
  • گزینه "--recurse-submodules" را به دستور "git branch" اضافه کرد تا زیر ماژول ها را به صورت بازگشتی طی کند.
  • Userdiff یک هندلر جدید برای زبان Kotlin ارائه می دهد.

منبع: opennet.ru

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