Llançament del sistema de control de font distribuït Git 2.31

El sistema de control de font distribuït Git 2.31 ja està disponible. Git és un dels sistemes de control de versions més populars, fiables i d'alt rendiment, que ofereix eines de desenvolupament flexibles no lineals basades en ramificacions i fusions. Per garantir la integritat de l'historial i la resistència als canvis retroactius, en cada commit s'utilitza el hashing implícit de tot l'historial anterior; també és possible certificar etiquetes individuals i commits amb signatures digitals dels desenvolupadors.

En comparació amb la versió anterior, la nova versió va incloure 679 canvis, preparats amb la participació de 85 desenvolupadors, dels quals 23 van participar en el desenvolupament per primera vegada. Principals innovacions:

  • S'ha afegit l'ordre "git maintenance", que us permet realitzar treballs periòdics en sistemes que no admeten cron. Per exemple, utilitzant una ordre nova, podeu organitzar que el procés d'empaquetament del dipòsit s'executi periòdicament, de manera que no haureu d'esperar fins que el dipòsit estigui bloquejat quan l'empaquetament es realitza automàticament mentre s'executen diverses ordres. L'ordre "git maintenance" us permet realitzar optimitzacions i operacions per mantenir l'estructura òptima del dipòsit en segon pla, sense bloquejar la sessió interactiva: un cop per hora, es treballa per descarregar de manera proactiva objectes nous del dipòsit remot i actualitzar el fitxer amb el gràfic de confirmació i el procés d'embalatge del dipòsit comença cada nit.
  • S'ha afegit suport per mantenir un índex invers (revindex) al disc per als fitxers de paquet. Recordeu que Git emmagatzema totes les dades en forma d'objectes, que es troben en fitxers separats. Per augmentar l'eficiència de treballar amb el dipòsit, els objectes es col·loquen addicionalment en fitxers paquet, en els quals la informació es presenta en forma d'un flux d'objectes que se succeeixen (s'utilitza un format similar quan es transfereixen objectes amb git fetch i git push). ordres). Per a cada fitxer de paquet, es crea un fitxer d'índex (.idx), que us permet determinar molt ràpidament el desplaçament del fitxer de paquet en què s'emmagatzema l'objecte donat mitjançant l'identificador d'objecte. Introduït a Git 2.31, l'índex invers (.rev) té com a objectiu optimitzar el procés de determinació d'un identificador d'objecte a partir de la informació sobre la col·locació d'un objecte en un fitxer paquet.

    Anteriorment, aquesta conversió es realitzava sobre la marxa mentre s'analitzava el fitxer pack i s'emmagatzemava només a la memòria, la qual cosa no permetia reutilitzar índexs similars i obligava a generar l'índex cada vegada. L'operació de construir un índex es redueix a construir una matriu de parells de posició d'objecte i ordenar-la per posició, cosa que pot trigar molt de temps per a fitxers de paquets grans.

    Per exemple, una operació per mostrar el contingut d'objectes, que utilitza un índex directe, va ser 62 vegades més ràpida que una operació per mostrar la mida d'objectes, per a la qual no s'han indexat les dades de posició a objecte. Després d'utilitzar l'índex invers, aquestes operacions van començar a prendre aproximadament el mateix temps. Els índexs inversos també us permeten accelerar les operacions d'enviament d'objectes quan s'executen ordres d'obtenció i push mitjançant la transferència directa de dades ja fetes del disc. De manera predeterminada, no es creen índexs inversos; per generar-los, heu d'activar la configuració "git config pack.writeReverseIndex true" i després empaquetar el repositori amb l'ordre "git repack -Ad".

  • S'han afegit optimitzacions de rendiment basades en l'aparició en el format de fitxer commit-graph, que s'utilitzen per optimitzar l'accés a la informació sobre commits, noves dades sobre el número de generació de commits, que es poden utilitzar per accelerar operacions addicionals amb commits.
  • S'han afegit opcions per redefinir el nom de la branca principal utilitzada per defecte als nous repositoris (configuració init.defaultBranch). Quan accedeix a repositoris externs, git intenta comprovar la branca a la qual apunta HEAD, és a dir. si el servidor extern utilitza la branca "principal" de manera predeterminada, aleshores l'operació "git clone" intentarà comprovar "main" localment. Git 2.31 ara admet aquest tipus de pagament per a dipòsits buits. Per exemple, quan es clonen un nou dipòsit localment abans d'afegir-hi els primers pedaços, la còpia local ara contindrà el nom amunt predeterminat establert al servidor extern.
  • S'ha afegit una opció --disk-usage a l'ordre "git rev-list" per proporcionar un resum de la mida dels objectes.
  • En previsió del proper canvi al backend de combinació, la detecció de canvi de nom s'ha optimitzat significativament.
  • El suport per a la biblioteca d'expressions regulars PCRE1 heretada s'ha interromput.
  • És possible prohibir per força l'ús d'enllaços escurçats, independentment de l'algoritme hash. La prohibició s'habilita assignant el valor "no" al paràmetre core.abbrev.
  • S'ha afegit l'opció "--path-format=(absolute|relative)" a l'ordre "git rev-parse" per especificar de manera explícita si s'han de sortir camins relatius o absoluts.
  • Els scripts de finalització de Bash faciliten afegir regles de finalització per a les vostres pròpies subordres "git".
  • S'ha afegit una opció --stdin a l'ordre "git bundle" per llegir referències del flux d'entrada estàndard.
  • S'ha afegit una nova opció a l'ordre "git log": "--diff-merges=" "
  • S'ha afegit l'opció "--deduplicatecan" a l'ordre "git ls-files" per eliminar la sortida duplicada.
  • S'han afegit màscares noves per excloure una sèrie de commits - " ^!" I " ^- "
  • S'han afegit opcions "--left-only" i "--right-only" a l'ordre "git range-diff" per mostrar només un costat de l'interval que es compara.
  • S'han afegit opcions --skip-to= a les ordres "git diff" i "git log". " i "—girar-a= » per saltar o moure's fins al final dels camins inicials.
  • S'ha afegit l'opció "--skip-to=" a l'ordre "git difftool". » per reprendre una sessió interrompuda des d'un camí aleatori.
  • El Codi de conducta, que defineix els principis bàsics per resoldre situacions de conflicte entre desenvolupadors, s'ha actualitzat a la versió 2.0 (anteriorment s'utilitzava la versió 1.4).

    Font: opennet.ru

Afegeix comentari