Git 2.39 lähdeohjausjulkaisu

Kahden kuukauden kehitystyön jälkeen hajautetun lähteen ohjausjärjestelmä Git 2.39 on julkaistu. Git on yksi suosituimmista, luotettavimmista ja tehokkaimmista versionhallintajärjestelmistä, joka tarjoaa joustavia epälineaarisia kehitystyökaluja, jotka perustuvat haarautumiseen ja yhdistämiseen. Historian eheyden ja taannehtivien muutosten kestävyyden varmistamiseksi jokaisessa sitoumuksessa käytetään koko aikaisemman historian implisiittistä hajautusta, ja yksittäiset tagit ja sitoumukset on myös mahdollista varmentaa kehittäjien digitaalisilla allekirjoituksilla.

Edelliseen julkaisuun verrattuna uusi versio sisälsi 483 muutosta, jotka valmisteltiin 86 kehittäjän osallistuessa, joista 31 osallistui kehitykseen ensimmäistä kertaa. Tärkeimmät innovaatiot:

  • "git shortlog" -komento, joka on suunniteltu näyttämään yhteenvedot tilastotiedoilla muutoshistoriasta, on lisännyt "-group"-vaihtoehdon, joka mahdollistaa toimitusten mielivaltaisen ryhmittelyn kenttien mukaan, jotka eivät rajoitu tekijään tai toimittajaan. Jos haluat esimerkiksi näyttää kehittäjien luettelon, jossa on tietoja muutosten määrästä, ottaen huomioon "Yhteiskirjoittaja"-kentässä mainitut apuohjelmat, voit käyttää komentoa: git shortlog -ns --group=author - -ryhmä=traileri:yhteiskirjoittaja

    Shortlog-tulosteet voidaan koota muotoilumääritteiden avulla, ja "--group"-vaihtoehto voi merkittävästi yksinkertaistaa monimutkaisten raporttien luomista ja poistaa ylimääräisten lajittelukomentojen tarpeen. Jos haluat esimerkiksi luoda raportin, joka sisältää tiedot siitä, kuinka monta toimitusta tietylle julkaisulle hyväksyttiin kuukaudessa, voit määrittää: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Aikaisemmin samanlaisen toiminnon suorittamiseen olisi pitänyt käyttää lajittelu- ja uniq-apuohjelmia: git log v2.38.0. .. —date='format:%Y -%m' —format='%cd' | lajitella | ainutlaatuinen -c

  • "Cruft packs" -mekanismin ominaisuuksia, jotka on suunniteltu pakkaamaan saavuttamattomia kohteita, joihin ei viitata arkistossa (ei viitata haaroihin tai tunnisteisiin), on laajennettu. Roskankerääjä poistaa tavoittamattomat kohteet, mutta ne pysyvät arkistoon tietyn ajan ennen kuin ne poistetaan kilpailuolosuhteiden välttämiseksi. "Cruft packs" -mekanismin avulla voit tallentaa kaikki tavoittamattomat objektit yhteen pakkaustiedostoon ja näyttää tiedot kunkin kohteen muokkausajasta erillisessä taulukossa, joka on tallennettu erilliseen tiedostoon, jonka tunniste on ".mtimes", jotta ne eivät eivät ole päällekkäisiä kokonaismuokkausajan kanssa.

    Aika, jonka tavoittamattomat objektit pysyvät arkistossa ennen niiden poistamista, määräytyy "—prune="-vaihtoehdolla. " Vaikka viivyttäminen ennen poistamista on melko tehokas ja käytännöllinen tapa estää kilpailuolosuhteiden aiheuttama tietovaraston korruptio, se ei kuitenkaan ole 100 % luotettava. Vaurioituneen arkiston palauttamisen helpottamiseksi uusi julkaisu tarjoaa mahdollisuuden tallentaa puuttuvat objektit lisäämällä "--expire-to"-vaihtoehto "git repack" -komentoon, jonka avulla voit määrittää tiedoston ulkoisen arkiston luomista varten. kopio kaikista poistetuista objekteista. Tallentaaksesi esimerkiksi tavoittamattomat objektit, jotka eivät ole muuttuneet viimeisen 5 minuutin aikana backup.git-tiedostoon, voit käyttää komentoa: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Lisäsi merkittävästi (jopa 70 %) "git grep -cached" -operaation nopeutta haettaessa alueilta, jotka käyttävät osittaista kloonausta (sparse-checkout) ja joille on olemassa osittaisia ​​indeksejä (harva indeksi). Aikaisemmin "-cached" -vaihtoehtoa määritettäessä haku suoritettiin ensin tavallisessa indeksissä ja sitten osittaisissa, mikä johti huomattaviin viiveisiin haettaessa suurista arkistoista.
  • Palvelimen tarkistusta uusien objektien koherenssista ennen niiden sijoittamista arkistoon "git push" -operaation aikana on nopeutunut. Vaihtamalla vain ilmoitettujen linkkien huomioimiseen tarkistuksen yhteydessä 7 miljoonan linkin testivarastossa, joista vain 3 % on push-operaation kattamia, käyttöönotetut optimoinnit mahdollistivat tarkistusajan lyhentämisen 4.5-kertaiseksi.
  • Suojatakseen koodin mahdollisilta kokonaislukujen ylivuodoilta "git apply" -komento rajoittaa käsiteltävien korjaustiedostojen enimmäiskokoa. Jos korjaustiedoston koko ylittää 1 Gt, näyttöön tulee nyt virheilmoitus.
  • Mahdollisilta haavoittuvuuksilta suojaamiseksi on tehty muutoksia tarpeettomien tietojen poistamiseksi otsikoista käytettäessä h2h3-moduulia GIT_TRACE_CURL=1- tai GIT_CURL_VERBOSE=1-vaihtoehdon kanssa yhdessä HTTP/2:n kanssa.
  • Suorittaessasi uloskirjautumista haaralle, joka on symbolinen linkki toiseen haaraan, "git symbolic-ref HEAD" -komento näyttää nyt kohdehaaran nimen symlinkin nimen sijaan.
  • Lisätty tuki @{-1}-argumentille "--edit-description" -vaihtoehtoon ("git branch -edit-description @{-1}") edellisen haaran kuvauksen muokkaamista varten.
  • Lisätty "git merge-tree --stdin" -komento, joka välittää vaihtoehtoluettelon vakiosyötteen kautta.
  • Verkkotiedostojärjestelmissä fsmonitor-käsittelijä, joka valvoo tiedostojärjestelmän muutoksia, on oletuksena pois käytöstä.

Lähde: opennet.ru

Lisää kommentti