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

Disponible llançament d'un sistema de control de font distribuït Git 2.25.0. 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 i commits individuals amb signatures digitals dels desenvolupadors.

En comparació amb la versió anterior, la nova versió va incloure 583 canvis, preparats amb la participació de 84 desenvolupadors, dels quals 32 van participar en el desenvolupament per primera vegada. El principal innovacions:

  • La possibilitat de la clonació parcial s'acosta a l'estabilització i a la preparació total, cosa que us permet transferir només una part de les dades i treballar amb una còpia incompleta del dipòsit. Un clon típic copia totes les dades del dipòsit, incloses totes les versions de cada fitxer de l'historial de canvis. Per a dipòsits molt grans, la còpia de dades comporta un augment significatiu del trànsit i de l'espai en disc, fins i tot si el desenvolupador només està interessat en un subconjunt dels fitxers. Per facilitar la recuperació només d'una part de l'arbre de fonts de treball, la nova versió introdueix una ordre experimental "sparse-checkout" i una nova opció "--sparse" per a l'ordre "clone".

    Anteriorment, el procés de clonació selectiva es realitzava a través de la tasca filtres per filtrar el contingut innecessari i l'opció "-no-checkout" per desactivar l'ompliment dels fitxers que falten. Després d'això, abans de realitzar l'operació de pagament, calia habilitar la configuració core.sparseCheckout i definir una llista de patrons de camí exclosos al fitxer .git/info/sparse-checkout. Per exemple, per clonar sense taques i evitar que s'extreguin fitxers de subdirectoris de profunditat 2 o més, podeu executar:

    git clone --filter=blob:none --no-checkout /your/repository/here repo
    $cd repo
    $ cat >.git/info/sparse-checkout
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git checkout .

    La nova ordre "git sparse-checkout" simplifica molt el treball i redueix el procés d'organització del treball amb un dipòsit incomplet a les ordres següents:

    git clone --filter=blob:none --sparse /your/repository/here repo
    git sparse-checkout set /path/to/check/out

    L'ordre sparse-checkout us permet establir una llista de camins per a la compra (conjunt) sense configurar manualment .git/info/sparse-checkout, així com mostrar la llista actual de camins (llista) i habilitar o desactivar els pagaments parcials (habilitar /desactivar).

    Per optimitzar el treball amb repositoris molt grans i llistes de plantilles, el "git config core.sparseCheckoutCone", que limita els patrons permesos (en lloc de patrons arbitraris .gitignore, podeu especificar si s'han de revisar tots els camins i tots els fitxers d'un subdirectori determinat). Per exemple, si un repositori gran té un directori "A/B/C" i tot el treball es concentra al subdirectori "C", aleshores, quan activeu el mode sparseCheckoutCone, l'ordre "git sparse-checkout set A/B/ C" extreu tot el contingut de "C", però de "A" i "B" n'extreurà només les parts necessàries per treballar amb "C".

  • De la documentació ("git rebase -h"), s'han eliminat totes les referències a l'opció "--preserve-merges", que ha quedat obsoleta i s'hauria d'utilitzar per migrar un conjunt de commits.git rebase --rebase-fusions".
  • Per millorar la llegibilitat dels missatges amb pedaços enviats a les llistes de correu, s'ha afegit l'opció "git format-patch —cover-from-description subject", quan s'especifica, el primer paràgraf del text de descripció de la branca s'utilitza com a tema de la carta de presentació d'un conjunt de pedaços.
  • Suport implementat per a l'ús combinat de l'ordre "git apply -3way" i la configuració "merge.conflictStyle" ("git apply" ara té en compte l'estil de descripció del conflicte de merge.conflictStyle quan és necessari resoldre el conflicte després d'intentar-ho). per aplicar un fitxer de pedaç al repositori).
  • El codi de definició de funció utilitzat en operacions com ara "git diff/grep --show-function/-function-context" s'ha estès per donar suport a la definició de límits de funció en programes de llenguatge Elixir.
  • S'ha afegit una nova opció a "git add", "git commit", "git reset" i altres ordres: "-pathspec-from-file", que permet carregar una llista de camins des d'un fitxer o flux d'entrada. , en lloc d'enumerar-los a la línia d'ordres.
  • S'ha resolt el problema de detectar canvis de nom a nivell de directori en escriure commits. La definició no funcionava si el contingut d'un subdirectori es movia a l'arrel del dipòsit.
  • S'ha proposat una implementació inicial de l'ordre redissenyada "git add -i", que us permet afegir contingut modificat de manera interactiva, reescrit de Perl a C. S'està realitzant una reelaboració similar de l'ordre "git add -p".
  • L'ordre “git log –graph” s'ha refactoritzat, generant una imatge ASCII d'un gràfic amb l'historial de canvis al repositori. La reelaboració va permetre millorar i simplificar significativament la sortida sense distorsionar l'estructura de la història, cosa que, per exemple, va resoldre el problema amb la imatge que s'estenia més enllà de l'amplada de la línia terminal.
  • L'opció "git log --format=.." us permet canviar el format de sortida,
    ampliat amb suport per als indicadors "l/L" per mostrar només la part de l'adreça de correu electrònic indicada abans del símbol "@" (per exemple, útil quan tots els desenvolupadors tenen tots els correus electrònics al mateix domini).

  • S'ha afegit una subordre "set-url" a l'ordre "git submodule".
  • Els kits de prova s'han actualitzat en preparació per a la transició a
    algorisme hashing SHA-2 en lloc de SHA-1.

Font: opennet.ru

Afegeix comentari