
Tərəfindən təqdim edildi paylanmış mənbə kodu idarəetmə sisteminin buraxılışı git 2.55Əsas dəyişikliklər arasında: Rust ilə standart quruluşu aktivləşdirmək, tətbiq etmək Linux fsmonitor prosesi, artan MIDX indeksini yenidən qablaşdırmaq üçün yeni strategiya, commit-i düzəltmək üçün git history fixup əmri, obyekt mövcudluğu bitmap generasiyasının optimallaşdırılması, qarmaqların paralel icrası üçün dəstək, git format-rev əmri. Git Kodu yayılır GPLv2+ altında lisenziyalıdır.
Əvvəlki versiya ilə müqayisədə yeni versiyaya 100 tərtibatçının iştirakı ilə hazırlanmış 505 dəyişiklik daxildir ki, bunlardan 33-ü Git inkişafında yeni idi.
Əsas yeniliklər (github.blog, gitlab.com/blog, gitlab.com/git-scm):
- Qiyabi daxildir Rust komponentləri üçün dəstək. Rustc kompilyatoru. əlavə etdi qurma asılılıqlarına. Rust olmadan qurmaq üçün, make yardım proqramını işlədərkən NO_RUST=1 bayrağından və ya meson configure işlədərkən -Drust=disabled bayrağından istifadə edə bilərsiniz. Rust ilə qurmağı deaktiv etmək imkanı Git 3.0-a qədər dəstəklənəcək, bu versiyada Rust olacaq. daxildir Tələb olunan asılılıqlar arasında. Rust dili SHA-1 və SHA-256 heş konfiqurasiyaları arasında daşınabilirlik üçün bir təbəqə, eləcə də dəyişkən uzunluqlu tam ədədlərin kodlaşdırılması və dekodlanması kimi bəzi daxili funksiyalar tətbiq edir. Gələcəkdə daha əhəmiyyətli daxili Git komponentlərinin Rust-da yenidən yazılacağı gözlənilir.
- Təcrübə qrupuna "git tarixi""git history fixup" əməliyyatı, commit tarixini yenidən yazmaq imkanı verən commit tarixini yenidən yazma alətinə əlavə edildi. Fixup əməliyyatı, git commit --fixup= əmrini işlətməyə bənzər şəkildə, git add vasitəsilə əlavə edilmiş dəyişiklikləri əvvəlki commit-ə köçürməyə və sonrakı bütün commit-ləri avtomatik olaraq yenidən yazmağa imkan verir. və git rebase --autosquash əmrini işlədir ~.
- Platforma üçün Linux fon prosesi tətbiq edildi fsmonitor, bir mexanizm istifadə edərək fayl sistemindəki dəyişiklikləri izləyir xəbərdar etmək və git status kimi əmrləri işlədərkən bütün işçi qovluğu keçməməyə imkan verir. Bu, " vasitəsilə aktivləşdirilə bilərəsas.fsmonitor.
- git repack əmri artıq yeni --write-midx=incremental seçiminə malikdir. Bu seçim, incremental MIDX indeksində (multi-pack indeksi) metaməlumatları yeniləmək üçün yeni bir strategiya tətbiq edir və bütün indeksi yenidən qablaşdırmaq ehtiyacını aradan qaldırır. İncremental multi-pack indeksi, obyektlərin paket faylları arasında paylanması haqqında məlumat ehtiva edən tək bir böyük indeks əvəzinə təbəqələrdən istifadə edir. Hər təbəqə müəyyən sayda paket faylını əhatə edir və ayrıca bitmap faylında saxlanılır. Bu struktur, mövcud təbəqələri yenidən qurmadan indeksə yeni təbəqələr əlavə etməklə yeni paket fayllarında olan obyektlər haqqında məlumatların indeksə əlavə edilməsinə imkan verir. git repack --write-midx=incremental əmri, bu yaxınlarda yaradılmış paket fayllarını əhatə edən incremental MIDX indeksinə yeni bir təbəqə əlavə edir. --geometric depo qablaşdırma rejimi ilə birləşdirildikdə, yeni əmr, birdən çox paket faylından yeni obyektləri tək bir daha böyük paket faylına birləşdirməyə və lazım olduqda, incremental MIDX indeksinin bir neçə bitişik təbəqəsini qablaşdırmağa və birləşdirməyə imkan verir. Bu strategiya, git repack-in yalnız üst təbəqələri yenidən yazmasına imkan verir, köhnə, daha böyük təbəqələri toxunulmaz saxlayır və təbəqələrin ümumi sayını obyektlərin ümumi sayının loqarifmi ilə mütənasib saxlayaraq təbəqə zəncirinin nəzarətsiz böyüməsinin qarşısını alır.
- Obyekt mövcudluğu bitmaplarının generasiyası, lazımsız rekursiyanı, obyekt mövqelərinin keşlənməsini, bitmapları XOR əməliyyatı ilə birləşdirməzdən əvvəl çeşidləməni və yalançı birləşdirici bitmaplar yaratmaq üçün kodun yenidən işlənməsini aradan qaldıran yeni bir obyekt ağacı keçid alqoritmi vasitəsilə əhəmiyyətli dərəcədə optimallaşdırılmışdır ().yalançı birləşmə). Test anbarında optimallaşdırmalar bitmapın generasiya müddətini 612 saniyədən 294 saniyəyə endirdi.
- Paralel olaraq müstəqil tapşırıqları yerinə yetirmək imkanı tətbiq edilmişdir qarmaqlar Konfiqurasiya fayllarında. Paylaşılan vəziyyətə təsir edən və ya nəzərə alan hooklar, məsələn, commit qeydlərini dəyişdirən və ya indeksləri və işçi ağacı yoxlayan hooklar paralel olaraq işlədilə bilməz. Lakin, linter yoxlaması və vahid testi üçün hooklar paralel olaraq işlədilə bilər. Paralel icraya imkan verən hooklar hook.hook_name.parallel = true parametrindən istifadə edərək konfiqurasiya edilir. Eyni vaxtda işlədilə bilən işlərin sayı hook.jobs, hook ilə müəyyən edilir. .jobs və ya -j əmr sətri seçimi.
- git pack-objects --path-walk əmri artıq blob:none, blob:limit= kimi filtrləri təyin etməyə imkan verir. , ağac:0, obyekt:növ= , seyrək: və combine:. Testdə, --path-walk əmrini icra edərkən ləkələrin atılması yaradılan paket faylının ölçüsünü 16% azaltdı.
- Commit siyahılarında qeyd olunan və ya ixtiyari mətndə tapılan düzəlişləri və obyekt adlarını formatlamaq üçün git format-rev əmri əlavə edildi (məsələn, bu, commit qeydlərini emal etmək üçün qarmaqlarda istifadə edilə bilər).
git last-modificed | git format-rev --stdin-mode=text --format=%an
Junio C Hamano quraşdırılmış/commit.c
- Server tərəfindən göndərilən məlumat mesajlarında və səhv mətnində əksər terminal idarəetmə ardıcıllıqlarından qaçış standart olaraq aktivdir. Zərərli serverə daxil olduqda, bu cür qaçış ardıcıllıqları çıxışı gizlətmək və ya dəyişdirmək üçün istifadə edilə bilər, məsələn, kursor hərəkəti və mətni təmizləmək üçün qaçış ardıcıllıqları vasitəsilə. Elementləri vurğulamaq üçün qaçış ardıcıllıqları üçün dəstək saxlanılıb.
- git checkout -m əmri artıq münaqişəni dərhal həll etməyinizi tələb etmədən avtomatik olaraq ziddiyyətli lokal dəyişiklikləri stash sahəsində saxlayır.
- git push əmri artıq bir budağı tək bir əmrlə birdən çox xarici Git serverinə push etməyi dəstəkləyir. Məsələn, əsas budağı yalnız əsas serverə deyil, həm də güzgülərə push etmək üçün github, gitlab və güzgü serverlərindən ibarət bir publish qrupu yarada bilərsiniz:
git config remotes.publish "github gitlab mirror"
git push publish main
- --graph-lane-limit= seçimi git log --graph əmrinə əlavə edildi. Budaqları vizuallaşdırarkən şaquli zolaqların sayını məhdudlaşdırmaq üçün, bu da çox sayda budağı olan depolarda commit məlumatları üçün ekranda yer buraxmağa imkan verir.
...
* | | | | 619931f561 'dl/posix-unused-warning-clang' filialını birləşdirin
|\ \ \ \ \
| * | | | ~ cf48887610 compat/posix.h: GIT_GNUC_PREREQ() müqayisəsini sadələşdirin
| * | | | ~ ffd45926dc compat/posix.h: GIT_GNUC_PREREQ() və İSTİFADƏ OLUNMAMIŞ faylları təmizləyin
|\ \ \ \ \~
| * | | | ~3f5203eeb4 ls-faylları: lstat-dan əvvəl yol spesifikasiyasını süzün
- --max-count-oldest= seçimi git log və git rev-list əmrlərinə əlavə edildi. , bu da sizə bir diapazonda ən köhnə N commit-i seçməyə imkan verir.
Mənbə: linux.org.ru
