lëshimi i sistemit të shpërndarë të menaxhimit të kodit burimor . Git është një nga sistemet më të njohura, të besueshme dhe me performancë të lartë për menaxhimin e versioneve, duke ofruar mjete fleksibël për zhvillimin jo linear, të bazuar në degëzim dhe bashkim të degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë kundrejt ndryshimeve retrospektivisht, përdoret hashim i fshehtë i gjithë historisë së mëparshme në çdo commit, gjithashtu është e mundur të besosh digjitalisht nënshkrimet e zhvilluesve për etiketat dhe commit-et e veçanta.
Krahasuar me versionin e kaluar, versioni i ri përfshin 745 ndryshime, të përgatitura me pjesëmarrjen e 74 zhvilluesve, prej të cilëve 18 morën pjesë për herë të parë në zhvillim. :
- Deri në versionin 1.18, një mënyrë e re transferimi e grupit të komiteteve "git rebase --rebase-merges" zëvendësoi opsionin e vjetër "--preserve-merges", i cili tani është shënuar si i vjetruar. Operacioni "git rebase" aplikohet për të zëvendësuar një seri komitetesh me një komitet të ri bazë, për shembull, për të lëvizur një degë të veçantë në të cilën zhvillohet ndonjë funksionalitet i ri, në gjendjen aktuale të degës master, e cila përfshin korrigjime të shtuara pas ndarjes:
o â o â o (my-feature)
/
o â o â o â o â o (master)
o â o â o (my-feature)
/
o â o â o â o â o (master)
Për të ruajtur strukturën e degës në degën e transferueshme, më parë mund të aplikohej opsioni "--preserve-merges", i cili gjatë ekzekutimit në mënyrë interaktive (git rebase -i --preserve-merges) lejonte redaktimin e historisë së komiteteve, por nuk garantonte ruajtjen e plotë të strukturës së repositories. Mënyra "--rebase-merges" që ka ardhur në vend të saj lejon ruajtjen e strukturës së ndryshimeve në degën e transferueshme, duke ofruar një gamë të plotë operacionesh interaktive, duke përfshirë fshirjen, ri-grupimin dhe rinamingun e komiteteve.
Për shembull, "--rebase-merges" rilidhni angazhimet nga një degë të veçantë në një degë më të re master, duke ruajtur kështu strukturën e degëzimit në degën e kalueshme dhe duke bërë disa ndryshime në shënimet e angazhimeve në lëvizje.
- Shtuar mbĂ«shtetje pĂ«r krijimin e njĂ« dege tĂ« re mbi bazĂ«n e pĂ«rcaktimit tĂ« bazĂ«s sĂ« bashkimit tĂ« dy degĂ«ve tĂ« tjera (merge base, lidhje me paraardhĂ«sin e pĂ«rbashkĂ«t) duke pĂ«rdorur struktura «git branch new AâŠB» dhe «git checkout -b new AâŠB», ku «AâŠB» nĂ«nkupton pĂ«rcaktimin e bazĂ«s sĂ« bashkimit midis dy angazhimeve tĂ« specifikuara, nĂ« pĂ«rputhje me atĂ« si «git checkout AâŠB» lĂ«viz HEAD nĂ« angazhimin bazĂ« dhe «diff AâŠB» tregon ndryshimet midis angazhimit «B» dhe paraardhĂ«sit tĂ« pĂ«rbashkĂ«t me angazhimin «A».
PĂ«r shembull, kur punoni me njĂ« degĂ« tĂ« veçantĂ« my-feature, mund tĂ« pĂ«rdorni mundĂ«sinĂ« e propozuar kur nevojitet tĂ« filloni nga njĂ« degĂ« tjetĂ«r, pĂ«r shembull, nga e njĂ«jta pikĂ« nĂ« degĂ«n master, nga e cila u nxor degĂ«n my-feature. MĂ« parĂ«, pĂ«r kĂ«tĂ« duhej tĂ« shqyrtonit manualisht logun e ndryshimeve, gjĂ« qĂ« krijonte pengesĂ« nĂ« prani tĂ« njĂ« historie tĂ« madhe ndryshimesh, dhe pastaj tĂ« kryenit «git merge-base master my-feature» pĂ«r tĂ« llogaritur hash-in e bazĂ«s sĂ« bashkimit mes degĂ«ve master dhe my-feature dhe tĂ« krijonit njĂ« degĂ« tĂ« re nĂ« raport me paraardhĂ«sin e pĂ«rbashkĂ«t «git branch my-other-feature hash». NĂ« Git 2.22, pĂ«r tĂ« krijuar njĂ« degĂ« nĂ« raport me bazĂ«n e bashkimit tĂ« dy degĂ«ve tĂ« tjera, mund tĂ« pĂ«rdorni sintaksĂ«n «git branch my-other-feature AâŠB»;
- Shtuar opsioni «git branch âshow-current» pĂ«r tĂ« treguar emrin e degĂ«s, i cili merret kur kryhet operacioni checkout;
- Shtuar opsioni «git checkout âno-overlay â dir», qĂ« lejon qĂ« gjatĂ« kryerjes sĂ« operacionit checkout tĂ« sjellĂ« pĂ«rmbajtjen e dosjes dir nĂ« njĂ« dukje qĂ« pĂ«rputhet plotĂ«sisht me gjendjen e degĂ«s master. PĂ«r shembull, nĂ«se nĂ« kopjen lokale tĂ« dosjes dir ka njĂ« skedar qĂ« nuk Ă«shtĂ« i pranishĂ«m nĂ« degĂ«n master, ai do tĂ« lihet, pĂ«r default, gjatĂ« kryerjes sĂ« «git checkout master â dir», dhe kur jepet opsioni «âno-overlay», ai do tĂ« fshihet;
- NĂ« komandĂ«n «git diff» Ă«shtĂ« angazhuar njĂ« API universale pĂ«r analizimin e opsioneve, qĂ« ka lejuar unifikimin e pĂ«rpunimit tĂ« opsioneve me utilitetet e tjera git. PĂ«r shembull, nĂ« «git diff» tani tĂ« gjitha opsionet janĂ« nĂ« dispozicion dhe antagonistet e tyre («âfunction-context» dhe «âno-function-context»);
- E shtuar mundĂ«sia e filtrimit gjatĂ« daljes sĂ« «git log» pĂ«r etiketat e zgjeruara tĂ« lidhura me commit-et («trailer» â flamuj informues shtesĂ«, si Signed-off-by dhe Co-authored-by). Filtrimi i etiketave Ă«shtĂ« i mundur si sipas çelĂ«sit, ashtu edhe sipas vlerĂ«s, pĂ«r shembull:
«git log âpretty=»%(trailers:key=Reviewed-by,valueonly)»; - E shtuar njĂ« mekanizĂ«m tĂ« ri gjurmimi Trace2, duke ofruar njĂ« format mĂ« fleksibĂ«l dhe tĂ« strukturuar pĂ«r daljen. Trace2 lejon mbledhjen e telemetrisĂ« pĂ«r veprimet nĂ« zhvillim dhe tĂ« dhĂ«nat mbi performancĂ«n pĂ«r njĂ« analizĂ« dhe debuggim mĂ« tĂ« detajuar (menaxheri caktohet nga pĂ«rdoruesi, asnjĂ« tĂ« dhĂ«nĂ« nuk dĂ«rgohet jashtĂ«);
- Raporti «git bisect» është bërë më i lexueshëm, ku tani gjithashtu dallohet më qartë commit-et problematike dhe jepet një statistikë e përmbledhur mbi ndryshimet për çdo skedar (në nivelin e numrit të linjave të ndryshuara);
- Eshkolimi i heuristikës për përcaktimin e rinovimeve të katalogëve është ripunuar me qëllim për të eliminuar vendosjen e gabuar të etiketave të rinovimit. Në rast dyshimesh, këto katalogë tani do të etiketohen si të konfliktueshëm;
- ĂshtĂ« siguruar njĂ« paralajmĂ«rim gjatĂ« pĂ«rpjekjes pĂ«r tĂ« vendosur njĂ« etiketĂ« mbi njĂ« etiketĂ« tjetĂ«r, e cila, zakonisht, bĂ«het gabimisht dhe mund tĂ« çojĂ« nĂ« vendosjen e etiketĂ«s nĂ« komitin e gabuar (pĂ«r shembull, konstrukti si «git tag -f -m «mesazhi i pĂ«rditĂ«suar» my-tag1 my-tag2» do tĂ« çojĂ« nĂ« krijimin e njĂ« etikete mbi etiketĂ«n e vjetĂ«r, ndĂ«rsa zhvilluesi priste qĂ« etiketĂ« e re tĂ« vendoset nĂ« komitin qĂ« tregon etiketa e vjetĂ«r);
- ĂshtĂ« aktivizuar gjenerimi pĂ«r depozitat e hartave bitore (struktura diskore «reachability bitmaps»), qĂ« ruajnĂ« tĂ« dhĂ«na mbi grupet e objekteve tĂ« disponueshme pĂ«r çdo komit, dhe lejojnĂ« tĂ« pĂ«rcaktohet shpejt prania e objektit bazĂ«. Kjo strukturĂ« redukton ndjeshĂ«m kohĂ«n e ekzekutimit tĂ« operacioneve tĂ« tĂ«rheqjes sĂ« tĂ« dhĂ«nave (git fetch).
Burimi: opennet.ru
