Fa pocs dies es va donar a conèixer el llançament de la nova versió del projecte Git 2.50, introduint més de 600 canvis impulsats per una comunitat activa que en aquesta ocasió va incloure 98 desenvolupadors, entre ells 35 contribuents nous.
Aquesta nova versió de Git 2.50 es destaca per la integració de noves comandes (git-diff-pairs), noves funcions per a neteja, filtratge i manteniment, el reemplaçament del motor de fusió recursive per ORT, així com també les millores de rendiment i correccions d'errors.
Principals novetats de Git 2.50
En aquesta nova versió de Git 2.50, una de les novetats més importants que presenta és la optimització en el tractament dels anomenats «cruft packs», és a dir, paquets dobjectes inaccessibles o no referenciats per branques o etiquetes. Tradicionalment, Git emmagatzemava aquests objectes en un únic fitxer d'empaquetat gran, cosa que podia generar problemes de rendiment en reempaquetar dipòsits amb molts d'aquests elements.
Amb la nova versió, Git permet dividir aquests cruft packs en diversos fitxers més petits, el que redueix lús de disc i millora el rendiment dentrada/sortida en operacions massives. A més, si introduïu l'opció –combine-cruft-below-sizePermetre combinar paquets petits en un de sol de forma més flexible que l'opció prèvia –max-cruft-size, sense imposar un límit a la mida del fitxer combinat. Aquesta nova funcionalitat és especialment útil en projectes amb objectes orfes repartits en múltiples paquets.
Una altra millora orientada a repositoris de gran escala és el suport experimental per l'actualització incremental de índexs MIDX , Els quals emmagatzemen la informació sobre objectes en capes separades utilitzant fitxers de mapes de bits, cosa que permet una actualització més àgil conforme s'afegeixen noves confirmacions. Aquest avenç és fonamental per a grans repositoris que requereixen operacions ràpides dindexació sense necessitat de reconstruir completament les metadades.
Reemplaçament complet del motor de fusió recursiu per ORT
Git 2.50 presenta un canvi important amb la eliminació definitiva del motor de fusió recursive tradicional. Al seu lloc, es consolida l'ús d'ORT, un motor de fusió més modern, mantenible i eficient. ORT no només ofereix una anàlisi més precisa de conflictes, sinó que permet verificar si una fusió és possible sense generar objectes addicionals. A més, la comanda merge-tree incorpora ara una opció –quiet per utilitzar-lo com a comprovador silenciós de fusions sense modificar el repositori.
gitt-diff-pairs: la solució als problemes d'escalabilitat
Sens dubte, la revisió de codi és un dels pilars del desenvolupament col·laboratiu modern, i en aquest procés les diferències o diffs entre revisions tenen un paper important. Amb l'arribada de Git 2.50, es presenta una solució pensada per escalar: la nova ordre git-diff-pairs.
Tradicionalment, per obtenir una comparació entre dues revisions s'utilitza una ordre com:
git diff HEAD~1 HEAD
Això genera un pegat complet amb tots els canvis entre les revisions indicades. Encara que eficaç en molts casos, pot representar un problema de rendiment quan es tracta de grans conjunts de fitxers modificats.
És per això que git-diff-pairs, va ser dissenyat específicament per rebre entrades en format raw directament des de la sortida de git diff-tree, i generar els pegats corresponents de manera eficient i precisa.
L'ús és tan senzill com:
git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z
Aquesta comanda pren els parells de blobs proporcionats i genera la sortida de diferències exacta, mantenint la informació contextual i permeten dividir el treball en lots més petits. Això obre la porta a processament paral·lel, millora l'eficiència de recursos i facilita l'escalabilitat en eines que presenten diferències, com ara GitLab.
Noves funcions per a neteja, filtrat i manteniment
Git 2.50 inclou diverses eines addicionals pensades per millorar el manteniment de repositoris:
- S'ha afegit la comanda git reflog drop, que permet esborrar completament el reflog d'una branca específica, ideal per netejar l'historial de treball quan ja no cal mantenir referències prèvies.
- L'opció –filter ara està disponible al git cat-file –batch, permetent filtrar resultats per tipus d'objecte.
A més, també es destaquen diverses optimitzacions internes:
- Millora en l'ús d'enllaços simbòlics, amb memòria cau de prefixos i reducció de verificacions redundants.
- Eliminació de dependències de Perl en scripts de documentació i proves, substituïts per funcions de shell o implementacions en C, cosa que facilita la compilació en sistemes amb configuracions minimalistes.
- Inclusió d'un controlador userdiff per a l'anàlisi de diferències en fitxers .ini.
- Millores en la compatibilitat de l'ordre git send-email amb servidors SMTP com Outlook.
Finalment, si estàs interessat a poder conèixer més sobre això, pots consultar els detalls al següent enllaç.