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

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

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

  • از زمان انتشار 1.18 در دسترس است، حالت جدید commit rebase "git rebase --rebase-merges" جایگزین گزینه قدیمی "--preserve-merges" می شود که اکنون منسوخ شده است. عملیات "git rebase" برای جایگزینی یک سری از commit ها با یک کامیت پایه جدید استفاده می شود، به عنوان مثال، برای انتقال یک شاخه جداگانه که در حال توسعه برخی ویژگی های جدید به وضعیت فعلی شاخه اصلی است، که شامل اصلاحاتی است که پس از شاخه اضافه شده است. :

    o - o - o (ویژگی من)

    /

    o - o - o - o - o (استاد)

    o - o - o (ویژگی من)

    /

    o - o - o - o - o (استاد)

    برای حفظ ساختار شاخه در یک شاخه مهاجرت شده، قبلاً می‌توان از گزینه «--preserve-merges» استفاده کرد، که وقتی در حالت تعاملی اجرا می‌شد (git rebase -i --preserve-merges)، امکان ویرایش تاریخچه commit را فراهم می‌کرد، اما حفظ کامل ساختار مخزن را تضمین نکرد. حالت جدید "--rebase-merges" به شما این امکان را می دهد که ساختار تغییرات در شاخه در حال مهاجرت را حفظ کنید، در حالی که طیف کاملی از عملیات تعاملی، از جمله حذف، گروه بندی مجدد و تغییر نام تعهدات را ارائه می دهد.

    به عنوان مثال، "--rebase-merges" اجازه می دهد تا مجدداً commit ها را از یک شاخه جداگانه به یک شاخه اصلی جدیدتر آپلود کنید، در حالی که ساختار شاخه را در شاخه مهاجرت حفظ کرده و تغییراتی را در یادداشت های commit در پرواز ایجاد کنید.

  • پشتیبانی برای ایجاد یک شاخه جدید بر اساس نتیجه تعیین پایه ادغام دو شاخه دیگر (پایه ادغام، اتصال به یک جد مشترک) با استفاده از ساختارهای "git branch new A...B" و "git checkout -b new" اضافه شد. A...B"، که در آن "A ...B" شامل تعریف یک پایه ادغام بین دو commit مشخص شده است، مشابه اینکه چگونه "git checkout A...B" HEAD را به تعهد پایه و "تفاوت A" تغییر می دهد. ..B تغییرات بین commit "B" و همان commit "A" "Acestor" را نشان می دهد.

    به عنوان مثال، هنگام کار بر روی یک شاخه جداگانه my-feature، این ویژگی می تواند زمانی استفاده شود که می خواهید از یک شاخه دیگر شروع کنید، به عنوان مثال، از همان مکان در شاخه اصلی که شاخه my-feature از آنجا بررسی شده است. قبلاً، برای محاسبه هش پایه ادغام بین شاخه‌های اصلی و my-feature، لازم بود که به صورت دستی لاگ تغییرات بررسی شود، که اگر سابقه تغییرات زیادی داشتید ناخوشایند بود، سپس «git merge-base master my-feature» را اجرا کنید. و ایجاد یک شاخه جدید نسبت به جد مشترک " git branch my-other-feature hash." در Git 2.22، می توانید از نحو "git branch my-other-feature A...B" برای ایجاد یک شاخه نسبت به پایه ادغام دو شاخه دیگر استفاده کنید.

  • گزینه "git branch --show-current" برای نمایش نام شعبه بدست آمده در حین عملیات پرداخت اضافه شد.
  • گزینه "git checkout —no-overlay — dir" را اضافه کرد که به شما امکان می دهد هنگام انجام عملیات پرداخت، محتویات فهرست dir را به فرمی بیاورید که کاملاً با وضعیت شاخه اصلی مطابقت دارد. به عنوان مثال، اگر فایلی در کپی محلی دایرکتوری dir وجود داشته باشد که در شاخه اصلی نباشد، به طور پیش فرض هنگام اجرای "git checkout master - dir" آن فایل باقی می ماند و اگر "--no-overlay" ” گزینه مشخص شده است، حذف خواهد شد.
  • دستور "git diff" از یک API جهانی برای تجزیه گزینه‌ها استفاده می‌کند، که امکان یکسان سازی مدیریت گزینه‌ها را با سایر ابزارهای git فراهم می‌کند. به عنوان مثال، در "git diff"، همه گزینه ها اکنون آنتاگونیست های خود را دارند ("--function-context" و "--no-function-context").
  • قابلیت فیلتر کردن برچسب‌های توسعه یافته متصل به commit‌ها را در خروجی "git log" اضافه کرد ("تریلر" - پرچم‌های اطلاعات اضافی، مانند Signed-off-by و Co-authored-by). فیلتر کردن برچسب ها بر اساس کلید و مقدار ممکن است، به عنوان مثال:
    "git log --pretty="%(trailers:key=Reviewed-by,valueonly)";

  • یک موتور ردیابی جدید، Trace2، اضافه شده است که فرمت خروجی انعطاف‌پذیرتر و ساختار یافته‌تری را ارائه می‌دهد. Trace2 به شما امکان می دهد برای تجزیه و تحلیل و اشکال زدایی دقیق تر، تله متری را در مورد عملیات اجرا شده و داده های عملکرد جمع آوری کنید (هندلر توسط کاربر اختصاص داده می شود، هیچ داده ای از خارج ارسال نمی شود).
  • گزارش "git bisect" قابل خواندن تر شده است، که در آن commit های مشکل ساز اکنون با وضوح بیشتری برجسته می شوند و آمار خلاصه تغییرات برای هر فایل نمایش داده می شود (در سطح تعداد خطوط تغییر یافته).
  • روش های اکتشافی برای تعیین تغییر نام دایرکتوری ها برای حذف نصب نادرست برچسب های تغییر نام دوباره کار شده است. در صورت شک، چنین دایرکتوری هایی اکنون به عنوان متناقض علامت گذاری می شوند.
  • زمانی که می‌خواهید یک تگ را روی تگ دیگری نصب کنید، یک هشدار نمایش داده می‌شود، که معمولاً به اشتباه انجام می‌شود و می‌تواند منجر به تنظیم برچسب در commit اشتباه شود (به عنوان مثال، ساختاری مانند "git tag -f -m "پیام به‌روزرسانی شده" my-tag1 my-tag2″ منجر به ایجاد یک تگ بر روی تگ قدیمی می‌شود، در حالی که توسعه‌دهنده انتظار داشت که تگ جدید روی commit که توسط تگ قدیمی به آن اشاره شده است نصب شود.
  • Generation برای مخازن بیت‌مپ (ساختار «بیت‌مپ‌های قابلیت دسترسی» مبتنی بر دیسک)، که داده‌های مجموعه‌ای از اشیاء موجود برای هر commit را ذخیره می‌کند و به شما امکان می‌دهد به سرعت وجود یک شی پایه را تعیین کنید، فعال است. این ساختار زمان اجرای عملیات بازیابی اطلاعات (git fetch) را به میزان قابل توجهی کاهش می دهد.

منبع: opennet.ru

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