lëshimi i sistemit të distribuar të menaxhimit të kodit burimor . Git është një nga sistemet më të njohura, të besueshme dhe me performancë të lartë të menaxhimit të versioneve, duke ofruar mjete fleksibël për zhvillimin jo-lineare, që bazohen në degëzim dhe bashkim të degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve pas ngjarjeve, përdoret hashing i heshtur i gjithë historisë së mëparshme në çdo commit, si dhe është e mundur të vërtetohen nënshkrimet digjitale të zhvilluesve për etiketat dhe commit-et specifike.
Në krahasim me versionin e kaluar, në këtë version janë pranuar 745 ndryshime, përgatitur me pjesëmarrjen e 74 zhvilluesve, prej të cilëve 18 morën pjesë për herë të parë në zhvillim. :
- NjĂ« funksion i ri i disponueshĂ«m qĂ« nga versioni 1.18 Ă«shtĂ« mĂ«nyra e ri-ndĂ«rlidhjes sĂ« grumbullit tĂ« komiteteve «git rebase ârebase-merges», e cila ka zĂ«vendĂ«suar opsionin e vjetĂ«r «âpreserve-merges», i cili tani Ă«shtĂ« shĂ«nuar si tĂ« vjetruar. Operacioni «git rebase» pĂ«rdoret 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Ă« caktuar, nĂ« tĂ« cilĂ«n zhvillohet njĂ« veçori e re, nĂ« gjendjen aktuale tĂ« deges master, e cila pĂ«rmban pĂ«rmirĂ«sime tĂ« shtuar 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Ă«ve nĂ« degĂ«n e ri-ndĂ«rlidhur, mĂ« parĂ« mund tĂ« pĂ«rdorej opsioni «âpreserve-merges», i cili, kur ekzekutohej nĂ« modalitetin interaktiv (git rebase -i âpreserve-merges), lejonte redaktimin e historisĂ« sĂ« komiteteve, por nuk garantonte ruajtjen e plotĂ« tĂ« strukturĂ«s sĂ« repositorios. MĂ«nyra e re «ârebase-merges» lejon ruajtjen e strukturĂ«s sĂ« ndryshimeve nĂ« degĂ«n e ri-ndĂ«rlidhur, duke ofruar njĂ« grup tĂ« plotĂ« operacionesh interaktive, pĂ«rfshirĂ« fshirjen, rigrupimin dhe rinimin e komiteteve.
PĂ«r shembull, «ârebase-merges» ndihmon pĂ«r tĂ« ri-ngarkuar komitetet nga njĂ« degĂ« tĂ« veçantĂ« nĂ« njĂ« degĂ« master mĂ« tĂ« re, duke ruajtur strukturĂ«n e degĂ«ve nĂ« degĂ«n e ri-ndĂ«rlidhur dhe duke bĂ«rĂ« disa ndryshime nĂ« shĂ«nimet e komiteteve gjatĂ« procesit.
- 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, pĂ«rcaktimi me njĂ« paraardhĂ«s tĂ« pĂ«rbashkĂ«t) duke pĂ«rdorur sintaksat «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 komiteteve tĂ« specifikuara, nĂ« pĂ«rputhje me atĂ« se si «git checkout AâŠB» lĂ«viz HEAD nĂ« komitetin bazĂ« dhe «diff AâŠB» tregon ndryshimet midis komitetit «B» dhe paraardhĂ«sit tĂ« pĂ«rbashkĂ«t me komitetin «A».
PĂ«r shembull, gjatĂ« punĂ«s mbi njĂ« degĂ« my-feature, funksionaliteti i propozuar mund tĂ« pĂ«rdoret kur Ă«shtĂ« e nevojshme tĂ« fillohet nga njĂ« degĂ« tjetĂ«r, pĂ«r shembull, nga e njĂ«jta pikĂ« nĂ« degĂ«n master, nga e cila Ă«shtĂ« nxjerrĂ« dega my-feature. MĂ« parĂ«, pĂ«r kĂ«tĂ« duhej tĂ« shqyrtohej manualisht logu i ndryshimeve, gjĂ« qĂ« krijonte shqetĂ«sime kur kishte njĂ« histori tĂ« madhe ndryshimesh, mĂ« pas tĂ« ekzekutohej «git merge-base master my-feature» pĂ«r tĂ« llogaritur hash-in bazĂ« tĂ« pĂ«rzierjes midis degĂ«ve master dhe my-feature dhe tĂ« krijohej njĂ« degĂ« e 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 pĂ«rzierjes sĂ« dy degĂ«ve tĂ« tjera, mund tĂ« pĂ«rdoret sintaksa «git branch my-other-feature AâŠB»;
- Shtohet opsioni «git branch âshow-current» pĂ«r tĂ« shfaqur emrin e degĂ«s qĂ« Ă«shtĂ« marrĂ« gjatĂ« operacionit checkout;
- Shtohet opsioni «git checkout âno-overlay â dir», i cili lejon qĂ« gjatĂ« operacionit checkout tĂ« sjellĂ« pĂ«rmbajtjen e katalogut dir nĂ« njĂ« gjendje qĂ« i pĂ«rkon plotĂ«sisht gjendjes sĂ« degĂ«s master. PĂ«r shembull, nĂ«se nĂ« kopjen lokale tĂ« katalogut dir ka njĂ« skedar qĂ« mungon nĂ« degĂ«n master, ai do tĂ« lihet nĂ« pĂ«rputhje me rregullat gjatĂ« ekzekutimit tĂ« «git checkout master â dir», dhe me shenjĂ«n «âno-overlay» do tĂ« hiqet;
- NĂ« komandĂ«n «git diff» Ă«shtĂ« aktivizuar njĂ« API universale pĂ«r analizimin e opsioneve, duke lejuar unifikimin e trajtimit tĂ« opsioneve me utilitetet e tjera tĂ« git. PĂ«r shembull, nĂ« «git diff» tani tĂ« gjitha opsionet kanĂ« akses edhe tek antagonistĂ«t e tyre («âfunction-context» dhe «âno-function-context»);
- Shtohet mundĂ«sia e filtrimit gjatĂ« daljes «git log» tĂ« etiketimeve tĂ« zgjeruara tĂ« bashkangjitura me komitetet («trailer» â flamuj informues shtesĂ«, siç Ă«shtĂ« Signed-off-by dhe Co-authored-by). Filtrimi i etiketimeve Ă«shtĂ« i mundur si sipas çelĂ«sit ashtu edhe sipas vlerĂ«s, pĂ«r shembull:
«git log âpretty=»%(trailers:key=Reviewed-by,valueonly)»; - Shtohet njĂ« mekanizĂ«m i ri ndjekjeje Trace2, qĂ« ofron njĂ« format mĂ« fleksibĂ«l dhe tĂ« strukturuar daljeje. Trace2 lejon mbledhjen e telemetrisĂ« mbi operacionet e kryera dhe tĂ« dhĂ«nat e performancĂ«s pĂ«r njĂ« analizĂ« dhe debug mĂ« tĂ« detajuar (gunxhimi caktohet nga pĂ«rdoruesi, asnjĂ« tĂ« dhĂ«nĂ« nuk dĂ«rgohet jashtĂ«);
- Raporti «git bisect» është bërë më i lexueshëm, në të cilin tani dallohet më qartë komitet problematik dhe shfaqen statistika përmbledhëse mbi ndryshimet për çdo skedar (në nivelin e numrit të rreshtave të ndryshuar);
- Heuristika për përcaktimin e rinovimeve të katalogëve është ripërdorur për të eliminuar caktimin e rremë të etiketave. Në rast dyshimi, këto katalogë tani shënohen si konfliktuese;
- U sigurua një paralajmërim kur përpiqet të vendosë një etiketë mbi një etiketë tjetër, e cila zakonisht bëhet gabimisht dhe mund të çojë në vendosjen e etiketës jo mbi commit-in e duhur (p.sh., konstrukti si «git tag -f -m «mesazh i përditësuar» my-tag1 my-tag2» do të krijojë një etiketë mbi etiketën e vjetër, ndërsa zhvilluesi priste që etiketa e re të vendosej mbi commit-in që tregon etiketën e vjetër);
- U aktivizua gjenerimi për repositorët e bitëve të hartës (struktura diskore «reachability bitmaps»), që ruajnë të dhënat mbi sete objektesh, të disponueshme për çdo commit, dhe lejojnë përcaktimin e shpejtë të pranisë së objektit bazë. Kjo strukturë ndjeshëm redukton kohën e ekzekutimit të operacioneve të ekstraktimit të të dhënave (git fetch).
Burimi: opennet.ru
