paskirstyto šaltinio valdymo sistemos išleidimas . Git yra viena populiariausių, patikimiausių ir našiausių versijų valdymo sistemų, teikianti lanksčius nelinijinius kūrimo įrankius, pagrįstus šakojimu ir sujungimu. Siekiant užtikrinti istorijos vientisumą ir atsparumą retroaktyviems pokyčiams, kiekviename įsipareigojime naudojama netiesioginė visos ankstesnės istorijos maiša, taip pat galima sertifikuoti atskiras žymas ir įsipareigojimus skaitmeniniais kūrėjų parašais.
Palyginti su ankstesne versija, naujojoje versijoje buvo 745 pakeitimai, parengti dalyvaujant 74 kūrėjams, iš kurių 18 kūrime dalyvavo pirmą kartą. :
- Pasiekiamas nuo 1.18 versijos, naujasis įvykdymo pertvarkymo režimas „git rebase --rebase-merges“ pakeičia seną parinktį „--preserve-merges“, kuri dabar nebenaudojama. Operacija „git rebase“ naudojama norint pakeisti įsipareigojimų seriją nauju baziniu įsipareigojimu, pavyzdžiui, norint perkelti atskirą šaką, kuri kuria naują funkciją, į dabartinę pagrindinės šakos būseną, kuri apima pataisymus, pridėtus po šakos. :
o - o - o (mano funkcija)
/
o - o - o - o - o (šeimininkas)
o - o - o (mano funkcija)
/
o - o - o - o - o (šeimininkas)
Norint išsaugoti šakos struktūrą perkeltoje šakoje, anksčiau galėjo būti naudojama parinktis „--preserve-merges“, kuri, paleidus interaktyviu režimu (git rebase -i --preserve-merges), leido redaguoti įsipareigojimų istoriją, bet negarantavo visiško kapinyno struktūros išsaugojimo. Naujasis „--rebase-merges“ režimas leidžia išsaugoti perkeliamos šakos pakeitimų struktūrą, kartu teikiant visą spektrą interaktyvių operacijų, įskaitant įsipareigojimų trynimą, pergrupavimą ir pervardijimą.
Pavyzdžiui, „--rebase-merges“ iš naujo įkelkite įsipareigojimus iš atskiros šakos į naujesnę pagrindinę šaką, išsaugodami šakos struktūrą perkeltoje šakoje ir atlikite kai kuriuos įsipareigojimų pastabų pakeitimus.
- Pridėtas palaikymas kuriant naują šaką, remiantis dviejų kitų šakų sujungimo bazės nustatymo rezultatu (sujungimo bazė, susiejimas su bendru protėviu), naudojant konstrukcijas „git branch new A...B“ ir „git checkout -b new“ A...B“, kuriame „A ...B“ apima dviejų nurodytų įsipareigojimų sujungimo bazės apibrėžimą, panašiai kaip „git checkout A...B“ perkelia HEAD į pagrindinį įsipareigojimą ir „diff A. ..B“ rodo pokyčius tarp „B“ įsipareigojimo ir „A“ įsipareigojimo „Protėvis“.
Pavyzdžiui, dirbant su atskira mano funkcijos šaka, šią funkciją galima naudoti, kai norite pradėti nuo kitos šakos, pavyzdžiui, nuo tos pačios pagrindinės šakos vietos, iš kurios buvo išregistruota mano funkcijos šaka. Anksčiau tam reikėjo rankiniu būdu išnagrinėti pakeitimų žurnalą, o tai buvo nepatogu, jei turėjote didelę pakeitimų istoriją, tada paleisti „git merge-base master my-feature“, kad būtų apskaičiuota pagrindinės ir mano funkcijos šakų sujungimo bazės maiša. ir sukurti naują šaką, susijusią su bendru protėviu „git filialas mano-kitos funkcijos maišos“. Git 2.22 versijoje galite naudoti sintaksę „git filialas mano-kita funkcija A...B“, kad sukurtumėte šaką, palyginti su dviejų kitų šakų sujungimo baze;
- Pridėta parinktis „git branch --show-current“, kad būtų rodomas atsiskaitymo operacijos metu gautas filialo pavadinimas;
- Pridėta parinktis „git checkout —no-overlay — dir“, kuri leidžia atliekant patikros operaciją dir katalogo turinį perkelti į formą, kuri visiškai atitinka pagrindinės šakos būseną. Pavyzdžiui, jei vietinėje dir katalogo kopijoje yra failas, kurio nėra pagrindinėje šakoje, tada pagal numatytuosius nustatymus vykdant „git checkout master - dir“ jis bus paliktas, o jei „--no-overlay“ ” nurodyta parinktis, ji bus ištrinta;
- Komanda „git diff“ naudoja universalią API parinkčių analizei, kuri leidžia suvienodinti parinkčių tvarkymą su kitomis „git“ programomis. Pavyzdžiui, „git diff“ dabar visos parinktys turi savo antagonistus („--function-context“ ir „--no-function-context“);
- Pridėta galimybė filtruoti išplėstines žymas, pridedamas prie įsipareigojimų „git žurnalo“ išvestyje („priekaba“ – papildomos informacijos vėliavėlės, pvz., „Pasirašė“ ir „Bendraautoris“). Galima filtruoti etiketes pagal raktą ir vertę, pavyzdžiui:
"git log --pretty="%(trailers:key=Review-by,valueonly)"; - Pridėtas naujas sekimo variklis „Trace2“, siūlantis lankstesnį ir struktūriškesnį išvesties formatą. Trace2 leidžia rinkti telemetriją apie atliktas operacijas ir našumo duomenis detalesnei analizei ir derinimui (tvarkyklę priskiria vartotojas, jokie duomenys nesiunčiami iš išorės);
- Ataskaita „git bisect“ tapo lengviau skaitoma, kurioje dabar aiškiau paryškinami probleminiai įsipareigojimai ir rodoma kiekvieno failo pakeitimų suvestinė (pakeistų eilučių skaičiaus lygiu);
- Katalogų pervadinimo nustatymo euristika buvo pakeista, kad būtų išvengta klaidingo pervadinimo etikečių įdiegimo. Jei kyla abejonių, tokie katalogai dabar pažymėti kaip nesuderinami;
- Įspėjimas rodomas, kai bandote įdiegti žymą kitoje žymoje, o tai paprastai daroma per klaidą ir gali sukelti žymos nustatymą neteisingai (pavyzdžiui, tokia konstrukcija kaip „git tag -f -m“ „atnaujintas pranešimas“). my-tag1 my-tag2″, žyma bus sukurta senoje žymoje, o kūrėjas tikėjosi, kad nauja žyma bus įdiegta įsipareigojime, kurį nurodė senoji žyma);
- Įgalintas bitų schemų saugyklų generavimas (diske pagrįsta „pasiekiamumo bitmaps“ struktūra), kuriose saugomi duomenys apie objektų rinkinius, prieinamus kiekvienam įsipareigojimui, ir leidžia greitai nustatyti pagrindinio objekto buvimą. Ši struktūra žymiai sumažina duomenų gavimo operacijų (git fetch) vykdymo laiką.
Šaltinis: opennet.ru
