Tagad ir pieejama izkliedēta pirmkoda kontroles sistēma Git 2.31. Git ir viena no populārākajām, uzticamākajām un augstas veiktspējas versiju kontroles sistēmām, kas nodrošina elastīgas, nelineāras izstrādes iespējas, kuru pamatā ir sazarošanās un apvienošana. Lai nodrošinātu vēsturisko integritāti un noturību pret retroaktīvām izmaiņām, katrā izmaiņu reizē tā izmanto netiešu visas iepriekšējās vēstures hešēšanu un iespējo atsevišķu tagu un izmaiņu digitālos parakstus.
Salīdzinot ar iepriekšējo versiju, jaunajā versijā ir iekļautas 679 izmaiņas, kas sagatavotas, piedaloties 85 izstrādātājiem, no kuriem 23 piedalījās pirmo reizi. Galvenās jaunās funkcijas ietver:
- Ir pievienota komanda "git maintenance", kas ļauj veikt periodiskus uzdevumus sistēmās, kas neatbalsta cron. Piemēram, jauno komandu var izmantot, lai periodiski palaistu repozitorija iepakošanas procesu, novēršot nepieciešamību gaidīt, kamēr repozitorijs tiek bloķēts, kad tiek veikta automātiskā iepakošana, izpildot dažādas komandas. Komanda "git maintenance" ļauj veikt optimizācijas un uzturēšanas darbības fonā, nebloķējot interaktīvo sesiju. Reizi stundā tā preventīvi lejupielādē jaunus objektus no attālā repozitorija un atjaunina izmaiņu grafika failu, kā arī katru nakti palaiž repozitorija iepakošanas procesu.
- Pievienots atbalsts pakotnes failu apgrieztā indeksa (revindex) uzturēšanai diskā. Atgādinām, ka Git visus datus glabā kā objektus, kas tiek glabāti atsevišķos failos. Lai uzlabotu repozitorija veiktspēju, objekti tiek papildus ievietoti pakotnes failos, kur informācija tiek attēlota kā objektu plūsma, kas seko viens otram (līdzīgs formāts tiek izmantots, pārsūtot objektus ar komandām git fetch un git push). Katram pakotnes failam tiek izveidots indeksa fails (.idx), kas ļauj ātri noteikt pakotnes faila nobīdi, kur konkrētais objekts tiek glabāts, pamatojoties uz objekta ID. Apgrieztais indekss (.rev), kas ieviests Git 2.31 versijā, ir paredzēts, lai optimizētu objekta ID noteikšanas procesu, pamatojoties uz objekta atrašanās vietu pakotnes failā.
Iepriekš šāda transformācija tika veikta operatīvi pakotnes faila parsēšanas laikā un saglabāta tikai atmiņā, kas neļāva šādus indeksus atkārtoti izmantot un piespieda indeksu ģenerēt katru reizi. Indeksu konstruēšana ietver objektu-pozīciju pāru masīva konstruēšanu un tā kārtošanu pēc pozīcijas, kas lieliem pakotnes failiem var būt laikietilpīgi.
Piemēram, objektu satura attēlošana, izmantojot tiešo indeksu, bija 62 reizes ātrāka nekā objektu izmēru attēlošana bez indeksēšanas. Pēc apgrieztā indeksa izmantošanas šīs darbības aizņēma aptuveni tikpat daudz laika. Apgrieztie indeksi arī paātrina izgūšanas un nosūtīšanas darbības, tieši pārsūtot iepriekš esošos datus no diska. Apgrieztie indeksi pēc noklusējuma netiek izveidoti; to ģenerēšanai ir jāiespējo iestatījums "git config pack.writeReverseIndex true" un pēc tam jāiepako repozitorijs ar "git repack -Ad".
- Pievienotas veiktspējas optimizācijas, pamatojoties uz jaunu apstiprināšanas ģenerēšanas skaita datu pievienošanu commit-graph faila formātam, kas tiek izmantots, lai optimizētu piekļuvi apstiprināšanas informācijai, ko var izmantot, lai paātrinātu papildu apstiprināšanas darbības.
- Дополнены возможности по переопределению имени основной ветки, применяемой по умолчанию в новых репозиториях (настройка init.defaultBranch). При обращении к внешним репозиториям git пытается извлечь ветку, на которую указывает HEAD, т.е. если внешний serveri использует по умолчанию ветку «main», то операция «git clone» попытается локально извлечь «main. В Git 2.31 поддержка подобного извлечения теперь реализована и для пустых репозиториев. Например, при локальном клонировании нового репозитория перед добавлением в него первых патчей, локальная копия теперь будет содержать выставленное на внешнем serveris Galvenās filiāles noklusējuma nosaukums.
- Komandai 'git rev-list' tagad ir opcija '--disk-usage', kas ļauj parādīt objektu izmēru kopsavilkumu.
- Paredzot gaidāmo apvienošanas aizmugursistēmas nomaiņu, pārdēvēšanas noteikšana ir ievērojami optimizēta.
- Atbalsts mantotajai PCRE1 regulāro izteiksmju bibliotēkai ir pārtraukts.
- Tagad ir pieejama saīsinātu URL piespiedu atspējošana neatkarīgi no jaucējkodēšanas algoritma. Šo atspējošanu var iespējot, iestatot parametru core.abbrev uz "no".
- Komandai 'git rev-parse' tagad ir opcija '--path-format=(absolute|relative)', lai skaidri kontrolētu, vai tiek izvadīti relatīvi vai absolūti ceļi.
- Bash ievades pabeigšanas skripti tagad atvieglo pabeigšanas noteikumu pievienošanu pielāgotām git apakškomandām.
- Komandai “git bundle” tagad ir opcija “--stdin”, lai nolasītu atsauces no standarta ievades.
- Komandai "git log" ir pievienota jauna opcija "--diff-merges=". ".
- Komandai "git ls-files" tagad ir opcija "--deduplicatecan", lai no izvades izslēgtu dublikātus.
- Pievienotas jaunas maskas, lai izslēgtu virkni izmaiņu — " ^!» un « ^- ".
- Komandai 'git range-diff' tagad ir opcijas '--left-only' un '--right-only', lai parādītu tikai vienu salīdzinātā diapazona pusi.
- git diff un git log komandām pievienotas opcijas --skip-to= " un "—rotēt-uz= », lai izlaistu vai pārvietotos uz sākotnējo ceļu beigām.
- Komandai git difftool tagad ir opcija "--skip-to=". » lai atsāktu pārtrauktu sesiju no patvaļīga ceļa.
- Uzvedības kodekss, kas nosaka izstrādātāju konfliktsituāciju risināšanas pamatprincipus, ir atjaunināts uz 2.0 versiju (iepriekš tika izmantota 1.4 versija).
Avots: opennet.ru
