Lanzamento do sistema de control de fonte distribuído Git 2.22

Presentado liberación dun sistema de control de fonte distribuído git 2.22.0. Git é un dos sistemas de control de versións máis populares, fiables e de alto rendemento, que ofrece ferramentas de desenvolvemento flexibles e non lineais baseadas en ramificación e fusión. Para garantir a integridade do historial e a resistencia aos cambios retroactivos, utilízase o hash implícito de todo o historial anterior en cada commit, e tamén é posible certificar etiquetas e commits individuais con sinaturas dixitais dos desenvolvedores.

En comparación coa versión anterior, a nova versión incluía 745 cambios, elaborados coa participación de 74 desenvolvedores, dos cales 18 participaron no desenvolvemento por primeira vez. O principal innovacións:

  • Dispoñible desde a versión 1.18, o novo modo de rebase de confirmación "git rebase --rebase-merges" substitúe a antiga opción "--preserve-merges", que agora está en desuso. A operación "git rebase" utilízase para substituír unha serie de confirmacións por unha nova confirmación base, por exemplo, para mover unha rama separada que está a desenvolver algunha característica nova ao estado actual da rama mestra, que inclúe correccións engadidas despois da rama. :

    o - o - o (a miña función)

    /

    o - o - o - o - o (mestre)

    o - o - o (a miña función)

    /

    o - o - o - o - o (mestre)

    Para preservar a estrutura da rama nunha rama migrada, podíase usar previamente a opción "--preserve-merges", que, cando se executaba en modo interactivo (git rebase -i --preserve-merges), permitía editar o historial de commit, pero non garantiu a preservación completa da estrutura do repositorio. O novo modo "--rebase-merges" permítelle preservar a estrutura dos cambios na rama que se migra, ao tempo que ofrece unha gama completa de operacións interactivas, incluíndo a eliminación, reagrupación e cambio de nome de commits.

    Por exemplo, "--rebase-merges" permite Volve cargar commits desde unha rama separada a unha rama mestra máis nova, mantendo a estrutura da rama na rama migrada, e fai algúns cambios nas notas de commit sobre a marcha.

  • Engadido soporte para a creación dunha nova rama baseada no resultado de determinar a base de fusión doutras dúas ramas (base de combinación, vinculación a un antepasado común) usando as construcións "git branch new A...B" e "git checkout -b new A...B", no que "A...B" implica definir unha base de fusión entre dúas confirmacións especificadas, de forma similar a como "git checkout A...B" cambia o HEAD á confirmación base e "diff A. ..B" mostra os cambios entre commit "B" e o mesmo que commit "A" "Ancestor.

    Por exemplo, cando se traballa nunha rama de my-feature separada, esta función pódese usar cando quere comezar desde unha rama diferente, por exemplo, dende o mesmo lugar da rama mestra desde a que se comprobou a rama de my-feature. Anteriormente, isto requiría examinar manualmente o rexistro de cambios, o que era inconveniente se tiñas un gran historial de cambios, e despois executar "git merge-base master my-feature" para calcular o hash da base de combinación entre as ramas master e my-feature. e creando unha nova rama relativa ao antepasado común " git branch my-other-feature hash ". En Git 2.22, podes usar a sintaxe "git branch my-other-feature A...B" para crear unha rama relativa á base de fusión doutras dúas ramas;

  • Engadida a opción "git branch --show-current" para mostrar o nome da rama obtida durante a operación de pago;
  • Engadida a opción “git checkout —no-overlay — dir”, que permite, cando se realiza unha operación de checkout, levar o contido do directorio dir a un formulario que se corresponda totalmente co estado da rama mestra. Por exemplo, se hai un ficheiro na copia local do directorio dir que non está na rama mestra, entón por defecto ao executar "git checkout master - dir" deixarase e se o "--no-overlay ” se especifica a opción, eliminarase;
  • O comando "git diff" usa unha API universal para analizar opcións, o que fai posible unificar o manexo de opcións con outras utilidades git. Por exemplo, en “git diff”, todas as opcións agora teñen os seus antagonistas (“--function-context” e “--no-function-context”);
  • Engadiuse a posibilidade de filtrar as etiquetas estendidas anexas ás confirmacións na saída de "git log" ("tráiler" - marcas de información adicional, como Firmado por e Co-autoría). É posible filtrar as etiquetas por clave e valor, por exemplo:
    "git log --pretty="%(trailers:key=Revisado por,valueonly)";

  • Engadiuse un novo motor de rastrexo, Trace2, que ofrece un formato de saída máis flexible e estruturado. Trace2 permítelle recoller datos de telemetría sobre operacións executadas e datos de rendemento para unha análise e depuración máis detalladas (o usuario asigna o manejador, non se envían datos externamente);
  • O informe "git bisect" fíxose máis lexible, no que agora se destacan con máis claridade os compromisos problemáticos e móstranse estatísticas resumidas sobre os cambios de cada ficheiro (ao nivel do número de liñas modificadas);
  • Reelaboráronse as heurísticas para determinar o cambio de nome dos directorios para eliminar a instalación falsa de etiquetas de cambio de nome. En caso de dúbida, estes directorios están agora marcados como conflitivos;
  • Móstrase unha advertencia cando tenta instalar unha etiqueta noutra etiqueta, o que normalmente se fai por erro e pode levar a configurar a etiqueta nunha confirmación incorrecta (por exemplo, unha construción como "git tag -f -m "mensaxe actualizada" my-tag1 my-tag2″ provocará que se cree unha etiqueta na etiqueta antiga, mentres que o desenvolvedor esperaba que a nova etiqueta se instalase na confirmación sinalada pola etiqueta antiga);
  • A xeración está habilitada para repositorios de mapas de bits (estrutura de "mapas de bits de accesibilidade" baseada en disco), que almacenan datos sobre conxuntos de obxectos dispoñibles para cada commit e permiten determinar rapidamente a presenza dun obxecto base. Esta estrutura reduce significativamente o tempo de execución das operacións de recuperación de datos (git fetch).

Fonte: opennet.ru

Engadir un comentario