Objavljen je sistem za upravljanje izvornih kodova Git 2.52

Po treh mesecih razvoja je bil predstavljen izid distribuiranega sistema za upravljanje izvornih kodov Git 2.52. Git se ponaša z visoko zmogljivostjo in ponuja sredstva za nelinearni razvoj, ki temeljijo na razvejanju in združevanju vej. Za zagotavljanje celovitosti zgodovine in odpornosti na spremembe »za nazaj« se uporablja implicitno hashanje celotne prejšnje zgodovine v vsakem commit-u ter overitev z digitalnimi podpisi razvijalcev za posamezne oznake in commite. Koda Git-a se distribuira pod licenco GPLv2+.

V primerjavi s prejšnjim izdajam je v novo različico vključeno 637 sprememb, ki so jih pripravili 94 razvijalci (od tega 33 prvič sodelujočih pri razvoju Git-a). Glavne novosti (1, 2, 3):

  • Dodana je bila ukaz «git last-modified» za prikaz seznama datotek v določeni reviziji in commit-ih, skozi katere so bile narejene zadnje spremembe v vsaki od teh datotek. $ git last-modified HEAD b56f6dcd7b4c90192018e848d0810f091d092913 test.h 29330ae4b820147c98e723399e9438c8bee60a8a test1.c 573ad8917beb99dc643b6e7f5c117a294384a575 test2.c
  • Dodana je bila ukaz «git repo» za izvajanje dejanj, povezanih z izvlečkom informacij iz repozitorija. Predlagani sta dve podukazi — «git repo info» in «git repo structure», ki izpisujeta informacije o nastavitvah repozitorija in podatke o strukturi repozitorija (na primer lahko izveste število referenc in objektov v repozitoriju). $ git repo info object.format references.format object.format=sha1 references.format=reftable $ git repo structure | Struktura repozitorija | Vrednost | | ——————— | —— | | * Reference | | | * Število | 1983 | | * Veje | 4 | | * Oznake | 1125 | | * Oddaljeni | 854 | | * Drugo | 0 | | | | * Dostopni objekti | | | * Število | 518955 | | * Commits | 77469 | | * Drevesa | 188865 | | * Blobi | 251631 | | * Oznake | 990 |
  • V ekipo «git refs» so dodane tri podukazi, ki poenotijo razpršene in prekrivajoče se nizkosti raven operacije nad referencami (git for-each-ref, git show-ref, git update-ref in git pack-refs):
    • «git refs optimize» — optimizacija backend-a za shranjevanje referenc (po analogiji z «git pack-refs»).
    • «git refs list» — izpis seznama vseh referenc (po analogiji z «git for-each-ref» ali «git show-ref»).
    • «git refs exists» — preverjanje obstoja reference (analog «git show-ref —exists»).
  • Format za izvoz ili uvoz istorije commit-a je proširen mogućnošću rada sa kriptografskim potpisima, koristeći kako identifikatore objekata zasnovane na algoritmu SHA-1, tako i na osnovu SHA-256. U komandi "git fast-import" implementirana je podrška za obradu potpisanih tagova po analogiji sa potpisanim commit-ima. Dodate su opcije "—signed-commits=" i "—signed-tags=" za upravljanje obradom potpisanih commit-a i tagova tokom uvoza (rezim može prihvatiti vrednosti verbatim, warn-verbatim, warn-stri, strip ili abort).
  • U komandu "git maintenance" dodana je podrška za novu strategiju "geometric" ("git config set maintenance.strategy geometric"), koja omogućava smanjenje vremena održavanja velikih monorepozitorijuma. U poređenju sa prethodno dostupnom strategijom, koja koristi logiku kao u komandi "git gc", nova strategija izbegava ponovno pakovanje svih objekata i isključuje prekomerne resursne operacije, poput spajanja svih pack-fajlova (spajanje se vrši delimično i bez čišćenja obrisanih objekata, kada je to moguće).
  • Dodata je komanda "git sparse-checkout clean" za pojednostavljenje obnavljanja stanja radnog direktorijuma, uklanjanjem fajlova koji se ne uklapaju u novu definiciju sparse-checkout, a koji ne bi trebali biti prisutni u lokalnoj kopiji u skladu sa trenutnim parametrima sparse-checkout.
  • Kako bi se oslobodila koda od komplikacija i pojednostavilo održavanje, sproveden je refaktoring radi smanjenja korišćenja globalne promenljive the_repository.
  • Proširena je primena Bloom filtera, verovatnosne strukture za proveru pripadnosti skupu, koja dopušta lažne definicije odsutnog elementa, ali isključuje propuštanje postojećeg elementa. Bloom filteri se sada koriste za ubrzavanje pretrage u istoriji izmena prilikom navođenja maski u putanjama fajlova, na primer, "foo/bar/*/baz".
  • Performanse komande "git describe" povećane su do 30%, zahvaljujući upotrebi prioritetske queue. U "git remote rename" ubrzane su operacije preimenovanja referenci. U "git ls-files" proširena je primena indeksa. Značajno je ubrzana rad komande "git log -L", zahvaljujući isključenju suvišnih trostrukih poređenja prilikom obrade spajanja commit-a. Unete su optimizacije u biblioteku xdiff.
  • Na voljo je možnost uporabe implementacij v jeziku Rust za nekatere notranje funkcije, kot sta kodiranje in dekodiranje celih števil spremenljive dolžine. Privzeto se koda v Rustu ne uporablja, vključitev pa zahteva nastavitev zbirne zastavice WITH_RUST. V prihodnosti je predvidena prenova pomembnejših notranjih komponent Gita v Rustu in dodajanje Rust kot obvezne zbirne odvisnosti v Gitu 3.0.
  • Seznam sprememb, ki povzročajo nepriznavanje, je posodobljen in bodo uporabljene v veji Git 3.0. V Gitu 3.0 je bilo odločeno, da se privzeto nastavitev init.defaultBranch spremeni v "main", torej v repozitorijih, ustvarjenih z ukazom "git init", bo privzeta veja imenovana "main", namesto "master". Prav tako se omenja prehod na identifikatorje predmetov na podlagi algoritma za hashiranje SHA-256 pri inicializaciji novih repozitorijev. Za poenostavitev prenosljivosti med repozitoriji z identifikatorji predmetov, ki temeljijo na hashih SHA-1 in SHA-256, je omogočeno, da v repozitoriju z enim algoritmom hashiranja izvajate operacije push in pull iz repozitorija, ki uporablja drug algoritem hashiranja.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster