Najavljeno je izdanje distribuiranog sustava za kontrolu izvora Git 2.38. Git je jedan od najpopularnijih, pouzdanih i visokoučinkovitih sustava za kontrolu verzija, koji pruža fleksibilne nelinearne razvojne alate temeljene na grananju i spajanju. Kako bi se osigurala cjelovitost povijesti i otpornost na retroaktivne promjene, implicitno raspršivanje cijele prethodne povijesti koristi se u svakom commitu; također je moguće certificirati pojedinačne oznake i commitove digitalnim potpisima programera.
U usporedbi s prethodnim izdanjem, nova verzija uključuje 699 promjena pripremljenih uz sudjelovanje 92 programera, od kojih je 24 po prvi put sudjelovalo u razvoju. Glavne inovacije:
- Osnovni paket uključuje uslužni program "scalar", koji je razvio Microsoft za upravljanje velikim repozitorijima. Uslužni program je izvorno napisan u C#, ali git uključuje prepisanu verziju u C. Novi uslužni program razlikuje se od naredbe git po tome što prema zadanim postavkama uključuje dodatne značajke i postavke koje utječu na performanse pri radu s vrlo velikim repozitorijima. Na primjer, pri korištenju scalara vrijedi sljedeće:
- Djelomično kloniranje za rad s nepotpunom kopijom repozitorija.
- Ugrađeni mehanizam za praćenje promjena u datotečnom sustavu (FSMonitor), eliminirajući potrebu za pregledavanjem cijelog radnog direktorija.
- Indeksi koji obuhvaćaju objekte u različitim paketnim datotekama (višepaket).
- Commit-graph datoteke s indeksom commit grafa koji se koriste za optimizaciju pristupa informacijama o commitu.
- Periodični pozadinski poslovi za održavanje optimalne strukture repozitorija u pozadini bez blokiranja interaktivne sesije (jednom na sat se izvršava zadatak preventivnog preuzimanja novih objekata iz udaljenog repozitorija i ažuriranja datoteke grafa commit-a, a proces pakiranja repozitorija se pokreće svake noći).
- Način rada "sparseCheckoutCone", koji ograničava dopuštene uzorke prilikom djelomičnog kloniranja.
- Naredba git rebase sada ima opciju --update-refs za ažuriranje ovisnih grana koje se sijeku s granama koje se rebaziraju, eliminirajući potrebu za ručnom provjerom svake ovisne grane za prebacivanje na željeni commit.
- Naredba "git rm" sada je kompatibilna s parcijalnim indeksima.
- Poboljšano je ponašanje naredbe git mv AB prilikom premještanja datoteke iz radnog prostora s parcijalnim indeksima u konusnom načinu rada u vanjski radni prostor koji nema konusni način rada.
- Format bitmap datoteke optimiziran je za rad s velikim repozitorijima - dodana je opcionalna indeksna tablica s popisom odabranih commitova i njihovih pomaka.
- Naredba "git merge-tree" implementira novi način rada u kojem se, na temelju dva navedena commita, izračunava stablo s rezultatom spajanja, kao da su povijesti tih commita kombinirane.
- Dodana je postavka "safe.barerepository" za kontrolu mogu li se goli repozitoriji (repozitoriji koji ne sadrže radno stablo) smjestiti unutar drugih Git repozitorija. Postavljanjem na "explicit" dopustit će se samo goli repozitorij u direktoriju najviše razine. Da biste dopustili gole repozitorije u poddirektorijima, upotrijebite postavku "all".
- Naredba "git grep" sada ima opciju "-m" ("--max-count"), sličnu istoimenoj GNU grep opciji, koja vam omogućuje ograničavanje broja prikazanih rezultata.
- Naredba "ls-files" sada ima opciju "--format" za prilagođavanje izlaznih polja (na primjer, možete omogućiti ispis naziva objekta, načina rada itd.).
- U "git cat-file", prilikom prikaza sadržaja objekata, implementirana je mogućnost uzimanja u obzir autorovih email adresa navedenih u mailmap datoteci.
Izvor: opennet.ru
