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

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

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

  • امکان شبیه سازی جزئی در حال نزدیک شدن به تثبیت و آمادگی کامل است که به شما امکان می دهد تنها بخشی از داده ها را منتقل کنید و با یک کپی ناقص از مخزن کار کنید. یک کلون معمولی تمام داده ها را از مخزن کپی می کند، از جمله هر نسخه از هر فایل در تاریخچه تغییرات. برای مخازن بسیار بزرگ، کپی کردن داده ها منجر به افزایش قابل توجهی در ترافیک و فضای دیسک می شود، حتی اگر توسعه دهنده فقط به زیر مجموعه ای از فایل ها علاقه مند باشد. برای آسان‌تر کردن بازیابی تنها بخشی از درخت منبع کار، نسخه جدید یک فرمان آزمایشی "sparse-checkout" و یک گزینه "--sparse" جدید برای فرمان "clone" معرفی می‌کند.

    پیش از این، فرآیند شبیه سازی انتخابی از طریق این کار انجام می شد فیلترها برای فیلتر کردن محتوای غیر ضروری و گزینه "-no-checkout" برای غیرفعال کردن پر کردن فایل های از دست رفته. پس از آن، قبل از انجام عملیات پرداخت، لازم بود که تنظیمات core.sparseCheckout را فعال کرده و لیستی از الگوهای مسیر حذف شده را در فایل git/info/sparse-checkout. به عنوان مثال، برای شبیه سازی بدون حباب و جلوگیری از استخراج فایل ها از زیر شاخه های عمق 2 یا بیشتر، می توانید اجرا کنید:

    git clone --filter=blob:none --no-checkout /your/repository/here repo
    مخزن سی دی $
    $ cat >.git/info/sparse-checkout <EOF
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    پرداخت git $.

    دستور جدید "git sparse-checkout" کار را بسیار ساده می کند و فرآیند سازماندهی کار با یک مخزن ناقص را به دستورات زیر کاهش می دهد:

    git clone --filter=blob:none --sparse /your/repository/here repo
    git sparse-checkout set /path/to/check/out

    دستور sparse-checkout به شما امکان می دهد بدون پیکربندی دستی .git/info/sparse-checkout لیستی از مسیرها را برای پرداخت (تنظیم) تنظیم کنید، همچنین لیست فعلی مسیرها (فهرست) را نمایش دهید و پرداخت های جزئی را فعال یا غیرفعال کنید (فعال) /غیرفعال کردن).

    برای بهینه سازی کار با مخازن بسیار بزرگ و لیستی از قالب ها، "git config core.sparseCheckoutCone"، که الگوهای مجاز را محدود می کند (به جای الگوهای دلخواه .gitignore، می توانید مشخص کنید که آیا همه مسیرها و همه فایل ها در یک زیر شاخه مشخص باید بررسی شوند یا خیر). به عنوان مثال، اگر یک مخزن بزرگ یک دایرکتوری "A/B/C" داشته باشد و تمام کارها در زیر شاخه "C" متمرکز شده باشد، وقتی حالت sparseCheckoutCone را فعال می کنید، دستور "git sparse-checkout set A/B/" C تمام محتویات "C" را استخراج می کند، اما از "A" و "B" فقط قسمت های لازم برای کار با "C" را استخراج می کند.

  • از اسناد ("git rebase -h")، تمام ارجاعات به گزینه "--preserve-merges" حذف شده است، که منسوخ شده است و باید به جای آن برای انتقال مجموعه ای از commit ها استفاده شود.git rebase --rebase-merges".
  • برای بهبود خوانایی پیام های دارای وصله های ارسال شده به لیست های پستی، گزینه "git format-patch —cover-from-description subject" اضافه شده است، در صورت مشخص شدن، اولین پاراگراف از متن توضیحات شعبه به عنوان موضوع مورد استفاده قرار می گیرد. نامه پوششی برای مجموعه ای از پچ ها.
  • پشتیبانی پیاده‌سازی شده برای استفاده ترکیبی از دستور "git application -3way" و "merge.conflictStyle" تنظیم ("git application" اکنون سبک توصیف تضاد را از merge.conflictStyle در مواقعی که لازم است پس از تلاش حل شود، در نظر می‌گیرد. برای اعمال یک فایل پچ در مخزن).
  • کد تعریف تابع مورد استفاده در عملیاتی مانند "git diff/grep --show-function/-function-context" برای پشتیبانی از تعریف مرزهای تابع در برنامه های زبانی گسترش یافته است. اکسیر.
  • یک گزینه جدید به "git add"، "git commit"، "git reset" و دیگر دستورات - "-pathspec-from-file" اضافه شده است که امکان بارگیری لیستی از مسیرها را از یک فایل یا جریان ورودی فراهم می کند. ، به جای اینکه آنها را در خط فرمان فهرست کنید.
  • مشکل تشخیص تغییر نام در سطح دایرکتوری هنگام نوشتن commit حل شده است. اگر محتویات یک زیر شاخه به ریشه مخزن منتقل شود، این تعریف کار نمی کند.
  • یک پیاده سازی اولیه از دستور بازطراحی شده "git add -i" پیشنهاد شده است که به شما امکان می دهد محتوای تغییر یافته را به صورت تعاملی اضافه کنید که از Perl به C بازنویسی شده است. یک بازسازی مشابه از دستور "git add -p" در حال انجام است.
  • دستور "git log –graph" مجدداً ساخته شده است و یک تصویر ASCII از یک نمودار با تاریخچه تغییرات در مخزن ایجاد می کند. این کار امکان بهبود و ساده سازی قابل توجه خروجی را بدون تحریف ساختار داستان فراهم کرد، که برای مثال، مشکل گسترش تصویر فراتر از عرض خط پایانه را حل کرد.
  • گزینه "git log --format=.." به شما امکان می دهد فرمت خروجی را تغییر دهید.
    با پشتیبانی از پرچم‌های "l/L" برای نمایش تنها بخشی از آدرس ایمیل که قبل از نماد "@" نشان داده شده است، گسترش یافته است (به عنوان مثال، زمانی مفید است که همه توسعه‌دهندگان همه ایمیل‌ها را در یک دامنه داشته باشند).

  • یک دستور فرعی "set-url" را به دستور "git submodule" اضافه کرد.
  • کیت های تست در آماده سازی برای انتقال به روز شده اند
    الگوریتم هش SHA-2 به جای SHA-1.

منبع: opennet.ru

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