Versió de control de font de Git 2.39

Després de dos mesos de desenvolupament, s'ha llançat el sistema de control de codi font distribuït Git 2.39. 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 483 canvis, preparats amb la participació de 86 desenvolupadors, dels quals 31 van participar en el desenvolupament per primera vegada. Principals innovacions:

  • L'ordre "git shortlog", dissenyada per mostrar resums amb estadístiques de l'historial de canvis, ha afegit una opció "-group" per a l'agrupació arbitrària de commits per camps no limitats a autor o committer. Per exemple, per mostrar una llista de desenvolupadors amb informació sobre el nombre de canvis, tenint en compte els ajudants esmentats al camp "Co-authored-by", podeu utilitzar l'ordre: git shortlog -ns --group=author - -group=tráiler:coautor

    La sortida del registre curt es pot agregar mitjançant especificadors de format, i l'opció "--group" pot simplificar significativament la creació d'informes complexos i eliminar la necessitat d'ordres d'ordenació addicionals. Per exemple, per crear un informe amb informació sobre quants commits s'han acceptat per a una versió determinada cada mes, podeu especificar: 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 Prèviament, per realitzar una operació similar hauria estat necessari utilitzar les utilitats sort i uniq: git log v2.38.0 .. —date='format:%Y -%m' —format='%cd' | ordenar | uniq -c

  • S'han ampliat les capacitats del mecanisme "cruft packs", dissenyat per empaquetar objectes inabastables que no estan referenciats al repositori (no referenciats per branques o etiquetes). El col·lector d'escombraries elimina els objectes inaccessibles, però romanen al dipòsit durant un cert temps abans de suprimir-los per evitar condicions de carrera. El mecanisme de "cruft packs" us permet emmagatzemar tots els objectes inabastables en un fitxer de paquets i mostrar dades sobre el temps de modificació de cada objecte en una taula separada, emmagatzemades en un fitxer independent amb l'extensió ".mtimes", de manera que ho facin. no es superposen amb el temps total de modificació.

    El temps durant el qual els objectes inabastables romanen al repositori abans que s'eliminin realment ve determinat per l'opció "—prune=" " Tanmateix, tot i que retardar abans de suprimir és una manera força eficaç i pràctica d'evitar la corrupció del dipòsit a causa de les condicions de carrera, no és 100% fiable. Per facilitar la restauració d'un dipòsit danyat, la nova versió ofereix la possibilitat de desar els objectes que falten afegint l'opció "--expire-to" a l'ordre "git repack", que us permet especificar un fitxer per crear un fitxer extern. còpia de tots els objectes suprimits. Per exemple, per desar objectes inabastables que no han canviat en els últims 5 minuts al fitxer backup.git, podeu utilitzar l'ordre: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Augmenta significativament (fins a un 70%) la velocitat de l'operació "git grep -cached" en cercar en àrees que utilitzen clonació parcial (sparse-checkout) i per a les quals hi ha índexs parcials (sparse index). Anteriorment, quan s'especificava l'opció "-cached", la cerca es feia primer a l'índex regular i després als parcials, fet que provocava retards notables a l'hora de cercar en repositoris grans.
  • S'ha accelerat la verificació del servidor de la coherència dels nous objectes abans de col·locar-los al dipòsit durant l'operació "git push". En passar a comptabilitzar només els enllaços declarats a l'hora de comprovar, en un repositori de proves amb 7 milions d'enllaços, dels quals només un 3% estan coberts per l'operació push, les optimitzacions realitzades van permetre reduir el temps de comprovació en 4.5 vegades.
  • Per protegir-se de possibles desbordaments d'enters al codi, l'ordre "git apply" limita la mida màxima dels pedaços que es poden processar. Si la mida del pedaç supera 1 GB, ara es mostrarà un error.
  • Per protegir-se de possibles vulnerabilitats, s'han fet canvis per netejar la informació innecessària de les capçaleres establertes quan s'utilitza el mòdul h2h3 amb l'opció GIT_TRACE_CURL=1 o GIT_CURL_VERBOSE=1 juntament amb HTTP/2.
  • Quan es realitza una comprovació d'una branca que és un enllaç simbòlic a una altra branca, l'ordre "git symbolic-ref HEAD" ara mostra el nom de la branca de destinació en lloc del nom de l'enllaç simbòlic.
  • S'ha afegit suport per a l'argument @{-1} a l'opció "--edit-description" ("git branch —edit-description @{-1}") per editar la descripció d'una branca anterior.
  • S'ha afegit l'ordre "git merge-tree --stdin" per passar una llista d'opcions mitjançant l'entrada estàndard.
  • Als sistemes de fitxers de xarxa, el controlador fsmonitor, que supervisa els canvis al sistema de fitxers, està desactivat per defecte.

Font: opennet.ru

Afegeix comentari