Git 2.37 lähdeohjausjulkaisu

Hajautetun lähteen ohjausjärjestelmän Git 2.37 julkaisu on ilmoitettu. 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 uuteen versioon, joka valmistettiin 395 kehittäjän osallistuessa, tehtiin 75 muutosta, joista 20 osallistui kehitykseen ensimmäistä kertaa. Tärkeimmät innovaatiot:

  • Osaindeksien mekanismi (harva indeksi), joka kattaa vain osan arkistosta, on saatettu valmiiksi laajaan käyttöön. Osittaiset indeksit voivat parantaa suorituskykyä ja säästää tilaa arkistoissa, jotka suorittavat osittaista kloonausta (harva-tarkistus) tai toimivat arkiston epätäydellisen kopion kanssa. Uusi julkaisu täydentää osittaisten indeksien integroinnin git show-, git sparse-checkout- ja git stash -komentoihin. Osittaisten indeksien käytön huomattavin suorituskykyetu näkyy git stash -komennolla, jonka suoritusnopeus on joissain tilanteissa noussut 80 %.
  • Uusi "cruft packs" -mekanismi on otettu käyttöön tavoittamattomien objektien pakkaamiseen, joihin ei viitata arkistossa (ei viitata haaroilla tai tunnisteilla). Roskankerääjä poistaa tavoittamattomat kohteet, mutta ne pysyvät arkistoon tietyn ajan ennen kuin ne poistetaan kilpailuolosuhteiden välttämiseksi. Saavutamattomien kohteiden esiintymisajan seuraamiseksi on tarpeen liittää niihin tunnisteet samanlaisten objektien vaihtoajan mukaan, mikä ei salli niiden tallentamista yhteen pakettitiedostoon, jossa kaikilla objekteilla on yhteinen muutosaika. Aiemmin jokaisen objektin tallentaminen erilliseen tiedostoon johti ongelmiin, kun oli suuri määrä uusia, tavoittamattomia objekteja, joita ei vielä voitu poistaa. Ehdotettu "cruft packs" -mekanismi mahdollistaa kaikkien tavoittamattomien kohteiden tallentamisen yhteen pakettitiedostoon ja kunkin objektin muokkausajan tiedot erilliseen taulukkoon, joka on tallennettu tiedostoon, jonka tunniste on ".mtimes".
  • Windowsissa ja macOS:ssä on sisäänrakennettu mekanismi tiedostojärjestelmän muutosten seuraamiseksi, joten voit välttää iteroinnin koko työhakemistossa suoritettaessa toimintoja, kuten "git status". Aikaisemmin muutosten seurantaa varten ulkoisia apuohjelmia FS:n muutosten seurantaan, kuten Watchman, voitiin yhdistää koukkujen kautta, mutta tämä vaati lisäohjelmien asentamista ja konfigurointia. Nyt määritetty toiminto on sisäänrakennettu ja voidaan ottaa käyttöön komennolla "git config core.fsmonitor true".
  • "git sparse-checkout" -komennossa tuki vaihtoehdolle "-cone"-moodille, menetelmälle mallien määrittely osittaista kloonausta varten, on julistettu vanhentuneeksi, mikä mahdollistaa, kun määritetään arkiston osaa, johon sovelletaan kloonaustoiminto yksittäisten tiedostojen luetteloimiseksi käyttämällä ".gitignore"-syntaksia, joka ei salli osittaisten indeksien käyttöä optimointiin.
  • Lisää joustavuutta fsync()-kutsun määrittämisessä, jotta muutokset huuhdellaan levylle. Tuki "eräsynkronointistrategialle" on lisätty "core.fsyncMethod"-parametriin, mikä mahdollistaa työskentelyn nopeuttamisen kirjoitettaessa suuria määriä yksittäisiä tiedostoja keräämällä muutoksia takaisinkirjoitusvälimuistiin, jonka yksi fsync() nollaa. puhelu. Testi, jonka tuloksena 500 tiedostoa lisättiin "git add" -komennolla, saatiin päätökseen 0.15 sekunnissa, kun uusi tila otettiin käyttöön, kun taas fsync():n kutsuminen kesti 1.88 sekuntia jokaiselle tiedostolle ja ilman fsyncin käyttöä 0.06 sekuntia.
  • Haarojen läpikulkukomennot, kuten "git log" ja "git rev-list", sisältävät nyt vaihtoehdon "-since-as-filter=X", jonka avulla voit suodattaa pois tiedot toimituksista, jotka ovat vanhempia kuin X. Toisin kuin "—alkaen"-vaihtoehto, uusi komento toteutetaan suodattimena, joka ei pysähdy hakua, kun ensimmäinen toimitus on määritettyä aikaa vanhempi.
  • "git remote" -komennossa "-v" -lippua määritettäessä näytetään tiedot arkiston osittaisista klooneista.
  • Lisätty "transfer.credentialsInUrl"-asetus, joka voi ottaa arvot "warn", "die" ja "allow". Jos määritetty parametrissa "remote. .url" -selvätekstiset tunnistetiedot, "fetch"- tai "push"-toiminnon suorittaminen epäonnistuu virheellä, jos "transfer.credentialsInUrl"-asetukseksi on asetettu "die" tai varoitus, jos se on "varoita".
  • Oletusarvoisesti "git add -i" -komennon interaktiivisen tilan uusi toteutus, joka on kirjoitettu Perlistä C:ksi, on käytössä.

Lähde: opennet.ru

Lisää kommentti