Paylanmış mənbə idarəetmə sisteminin Git 2.55 versiyası elan edildi. Əsas dəyişikliklərə aşağıdakılar daxildir: Rust qurmalarının standart olaraq daxil edilməsi, tətbiqi Linux fsmonitor prosesi, artan MIDX indeksini yenidən qablaşdırmaq üçün yeni bir strategiya, commit-i düzəltmək üçün "git history fixup" əmri, obyekt mövcudluğu bitmap generasiyasının optimallaşdırılması, paralel hook icrası üçün dəstək və "git format-rev" əmri. Git GPLv2+ lisenziyası altında lisenziyalıdır.
Əvvəlki versiya ilə müqayisədə yeni versiyaya 100 tərtibatçının köməyi ilə hazırlanmış 505 dəyişiklik daxildir ki, bunlardan 33-ü Git inkişafında yeni idi. Əsas yeni xüsusiyyətlər (1, 2, 3):
- Rust dili komponent dəstəyi standart olaraq aktivdir. Rustc kompilyatoru
Rust, quruluş asılılıqlarına əlavə edildi. 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ə quruluşu deaktiv etmək imkanı, Rust-ı tələb olunan asılılıq kimi daxil edəcək Git 3.0-a qədər dəstəklənəcək. Rust, 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 Git daxili elementlərinin Rust-da yenidən yazılacağı gözlənilir. - Dəyişikliklərin tarixçəsini yenidən yazmaq imkanı verən eksperimental "git history" əmri, commit-i düzəltmək üçün "git history fixup" əməliyyatı ilə yeniləndi. "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ə bütün sonrakı commit-ləri avtomatik olaraq yenidən yazmağa imkan verir. "və "git rebase --autosquash" işlədir ~».
- Platforma üçün Linux "git status" kimi əmrləri yerinə yetirərkən bütün işçi qovluğu keçməməyə imkan verən və inotify mexanizmindən istifadə edərək fayl sistemindəki dəyişiklikləri izləyən fsmonitor fon prosesi tətbiq edilmişdir. Bu, "core.fsmonitor" parametri vasitəsilə aktivləşdirilə bilər.
- "git repack" əmri "--write-midx=incremental" seçimi ilə yeniləndi. 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 paketləmək 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, yeni paket fayllarındakı obyektlər haqqında məlumatların indeksə əlavə edilməsinə imkan verir və mövcud təbəqələri yenidən qurmadan indeksə yeni təbəqələr əlavə edir.
"git repack --write-midx=incremental" əmri, son zamanlar yaradılmış paket fayllarını əhatə edən artan 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ə zəruri hallarda artan MIDX indeksinin birdən çox bitişik təbəqəsini qablaşdırmağa və birləşdirməyə imkan verir. Bu strategiya "git repack"-ə yalnız yuxarı təbəqələri yenidən yazmağa və köhnə, daha böyük təbəqələri toxunulmaz saxlamağa imkan verir. Həmçinin, təbəqələrin ümumi sayını obyektlərin ümumi sayının loqarifminə 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ılıb. Test deposunda bu optimallaşdırmalar bitmap generasiya müddətini 612 saniyədən 294 saniyəyə endirdi.
- Müstəqil hookların paralel icrası artıq konfiqurasiya fayllarında mümkündür. 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 parametri 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
- Məlumat mesajlarında və ötürülən səhv mətnində əksər terminal idarəetmə ardıcıllıqlarından qaçış funksiyası standart olaraq aktivdir. serverZərərli proqrama daxil olduqda server Bu cür qaçış ardıcıllıqları, məsələn, kursor hərəkəti və mətni təmizləmək üçün qaçış ardıcıllıqları vasitəsilə çıxışı gizlətmək və ya dəyişdirmək üçün istifadə edilə bilər. 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əyə imkan verir. Məsələn, əsas budağı yalnız əsas serverə deyil, həm də güzgülərə push etmək üçün aşağıdakılardan "publish" qrupu yarada bilərsiniz serverlər "github", "gitlab" və "mirror":
git config remotes.publish "github gitlab mirror"
git push publish main - "git log --graph" əmri artıq "--graph-lane-limit=" seçiminə malikdir. » 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 - "git log" və "git rev-list" əmrləri artıq "--max-count-oldest=" seçiminə malikdir. , bu da sizə bir diapazonda ən köhnə N commit-i seçməyə imkan verir.
Mənbə: opennet.ru
