Sortie du systÚme de gestion de version distribué Git 2.22

Présenté lancement d'un systÚme de gestion décentralisé des textes sources Git 2.22.0. Git est l'un des systÚmes de gestion de version les plus populaires, fiables et performants, offrant des outils flexibles pour le développement non linéaire, basés sur le branchement et la fusion de branches. Pour garantir l'intégrité de l'historique et la résistance aux modifications rétroactives, un hachage implicite de toute l'histoire précédente est utilisé dans chaque commit ; la vérification par des signatures numériques des développeurs est également possible pour certains tags et commits.

Par rapport à la version précédente, la nouvelle version comprend 745 modifications préparées par 74 développeurs, parmi lesquels 18 ont participé au développement pour la premiÚre fois. Principales nouveautés:

  • Disponible depuis la version 1.18, le nouveau mode de transfert de la sĂ©rie de commits « git rebase --rebase-merges » remplace l'ancienne option « --preserve-merges », dĂ©sormais marquĂ©e comme obsolĂšte. L'opĂ©ration « git rebase » est utilisĂ©e pour remplacer une sĂ©rie de commits par un nouveau commit de base, par exemple, pour dĂ©placer une branche oĂč se dĂ©veloppe une nouvelle fonctionnalitĂ© vers l'Ă©tat actuel de la branche master, intĂ©grant des corrections ajoutĂ©es aprĂšs la divergence :

    o — o — o (my-feature)

    /

    o — o — o — o — o (master)

    o — o — o (my-feature)

    /

    o — o — o — o — o (master)

    Pour conserver la structure de ramification dans la branche transfĂ©rable, l'option « --preserve-merges » pouvait ĂȘtre utilisĂ©e prĂ©cĂ©demment, permettant lors d'une exĂ©cution en mode interactif (git rebase -i --preserve-merges) de modifier l'historique des commits, mais sans garantir la conservation complĂšte de la structure du dĂ©pĂŽt. Le nouveau mode « --rebase-merges » permet de conserver la structure des changements dans la branche transfĂ©rable, tout en offrant un ensemble complet d'opĂ©rations interactives, y compris la suppression, le regroupement et le renommage des commits.

    Par exemple, « --rebase-merges » d'installer retransférer des commits d'une branche séparée sur une branche master plus récente, tout en conservant la structure de ramification dans la branche transférable et en apportant en cours de route quelques modifications aux notes des commits.

  • Ajout de la prise en charge de la crĂ©ation d'une nouvelle branche basĂ©e sur le rĂ©sultat de la dĂ©finition de la base de fusion de deux autres branches (merge base, rĂ©fĂ©rence Ă  un ancĂȘtre commun) Ă  l'aide des constructions « git branch new A
B » et « git checkout -b new A
B », oĂč « A
B » sous-entend la dĂ©finition de la base de fusion entre deux commits spĂ©cifiĂ©s, de la maniĂšre dont « git checkout A
B » dĂ©place HEAD vers le commit de base et « diff A
B » montre les changements entre le commit « B » et l’ancĂȘtre commun avec le commit « A ».

    Par exemple, lors du travail sur une branche distincte my-feature, la fonctionnalitĂ© proposĂ©e peut ĂȘtre utilisĂ©e lorsqu'il est nĂ©cessaire de commencer Ă  partir d'une autre branche, par exemple, Ă  partir du mĂȘme point dans la branche master d'oĂč la branche my-feature a Ă©tĂ© extraite. Auparavant, il Ă©tait nĂ©cessaire d'examiner manuellement le journal des modifications, ce qui posait des problĂšmes en cas de longue histoire de modifications, puis exĂ©cuter «git merge-base master my-feature» pour calculer le hachage de la base de fusion entre les branches master et my-feature, et crĂ©er une nouvelle branche par rapport Ă  l'ancĂȘtre commun avec «git branch my-other-feature haché». Dans Git 2.22, pour crĂ©er une branche par rapport Ă  la base de fusion de deux autres branches, on peut utiliser la syntaxe «git branch my-other-feature A
B»;

  • Ajout de l'option «git branch —show-current» pour afficher le nom de la branche obtenue aprĂšs l'exĂ©cution de l'opĂ©ration checkout;
  • Ajout de l'option «git checkout —no-overlay — dir», permettant lors de l'opĂ©ration checkout de faire correspondre le contenu du rĂ©pertoire dir Ă  l'Ă©tat de la branche master. Par exemple, si dans la copie locale du rĂ©pertoire dir il y a un fichier absent dans la branche master, par dĂ©faut lors de l'exĂ©cution de «git checkout master — dir» il sera laissĂ©, et avec l'option «—no-overlay» il sera supprimĂ©;
  • Dans la commande «git diff», une API universelle a Ă©tĂ© mise en Ɠuvre pour analyser les options, ce qui a permis de uniformiser le traitement des options avec d'autres utilitaires git. Par exemple, dans «git diff», tous les antagonistes pour toutes les options sont maintenant disponibles («—function-context» et «—no-function-context»);
  • Ajout de la possibilitĂ© de filtrage lors de l'affichage de «git log» des Ă©tiquettes Ă©tendues attachĂ©es aux commits («trailer» - informations supplĂ©mentaires, telles que Signed-off-by et Co-authored-by). Un filtrage des Ă©tiquettes est possible tant par clĂ© que par valeur, par exemple :
    «git log —pretty=»%(trailers:key=Reviewed-by,valueonly)»;
  • Ajout d'un nouveau mĂ©canisme de traçage Trace2, offrant un format de sortie plus flexible et structurĂ©. Trace2 permet de collecter des tĂ©lĂ©metries sur les opĂ©rations exĂ©cutĂ©es et des donnĂ©es de performance pour une analyse et un dĂ©bogage plus dĂ©taillĂ©s (le gestionnaire est attribuĂ© par l'utilisateur, aucune donnĂ©e n'est envoyĂ©e Ă  l'extĂ©rieur);
  • Le rapport «git bisect» est devenu plus lisible, mettant maintenant plus clairement en Ă©vidence les commits problĂ©matiques et affichant des statistiques rĂ©sumĂ©es sur les modifications pour chaque fichier (au niveau du nombre de lignes modifiĂ©es);
  • L'heuristique pour dĂ©terminer les renommages de rĂ©pertoires a Ă©tĂ© retravaillĂ©e afin d'exclure les faux marquages de renommage. En cas de doute, ces rĂ©pertoires sont dĂ©sormais marquĂ©s comme conflictuels;
  • Un avertissement est gĂ©nĂ©rĂ© lors de la tentative d'ajouter une Ă©tiquette Ă  une autre Ă©tiquette, ce qui se produit gĂ©nĂ©ralement par erreur et peut entraĂźner l'ajout d'un marqueur au mauvais commit (par exemple, la commande « git tag -f -m « updated message » my-tag1 my-tag2 » entraĂźnera la crĂ©ation d'une Ă©tiquette sur une ancienne Ă©tiquette, alors que le dĂ©veloppeur s'attendait Ă  ce que la nouvelle Ă©tiquette soit appliquĂ©e au commit pointĂ© par l'ancienne Ă©tiquette);
  • La gĂ©nĂ©ration de bitmap pour les rĂ©fĂ©rentiels (structure de donnĂ©es « reachability bitmaps »), qui conserve des informations sur les ensembles d'objets accessibles pour chaque commit, a Ă©tĂ© activĂ©e, permettant de dĂ©terminer rapidement la prĂ©sence d'un objet de base. Cette structure rĂ©duit considĂ©rablement le temps d'exĂ©cution des opĂ©rations de rĂ©cupĂ©ration de donnĂ©es (git fetch).

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster