lancement d'un système de gestion décentralisé des textes sources . Git est l'un des systèmes de gestion de versions les plus populaires, fiables et performants, offrant des outils flexibles de développement non linéaire basés sur le branchement et la fusion. Pour garantir l'intégrité de l'historique et la résistance aux modifications rétroactives, un hachage implicite de l'ensemble de l'historique précédent est utilisé dans chaque commit, et il est également possible de vérifer numériquement par des signatures des développeurs pour des tags et commits spécifiques.
Comparé à la version précédente, la nouvelle version inclut 537 changements, préparés avec la participation de 71 développeurs, dont 19 ont participé au développement pour la première fois. Principales :
- Annulé l'activation par défaut réalisée dans la version précédente du protocole de communication Git, qui est utilisé lors de la connexion distante d'un client au serveur Git. Le protocole n'est pas encore considéré comme prêt à être utilisé par défaut en raison de problèmes délicats nécessitant un examen séparé.
- Ajouté un ensemble d'options pour configurer la connexion SSL lors des appels via un proxy.
- Meilleure information fournie lors de l'utilisation des filtres de transformation «clean» et «smudge». Par exemple, il montre désormais l'objet , dans lequel apparaît le blob transformé.
- Pour éviter toute confusion, la commande «git describe» applique désormais toujours le mode de sortie étendu («—long») s'il détecte un tag remplacé associé à un commit (auparavant, un tag signé ou annoté décrivant un commit était affiché même s'il avait été renommé ou déplacé dans la hiérarchie «refs/tags/», et la commande «git show tag^0» ne fonctionnait pas comme prévu — «refs/tags/tag» n'était pas trouvé ou était même remplacé par un autre tag).
- Lors de l'exécution de «git pull», un avertissement est désormais affiché si la variable de configuration pull.rebase n'est pas spécifiée explicitement et si les options «—[no-]rebase» ou «—ff-only» ne sont pas appliquées. Pour supprimer l'avertissement pour ceux qui ne prévoient pas d'effectuer une opération de rebase, il est possible de définir la variable à «false».
- Une révision des options «git pull» communes à «git fetch» a été effectuée. Les options précédemment non mentionnées similaires ont été documentées et la transmission des options manquées à «git fetch» a été assurée.
- Une option «—no-gpg-sign» a été ajoutée à la commande «git rebase» pour remplacer le paramètre «commit.gpgSign».
- Dans «git format-patch», la possibilité d'afficher les en-têtes «From:» et «Subject:» dans leur forme originale, sans conversion des caractères absents dans l'encodage ASCII, a été ajoutée.
- Dans «git log», une option «—show-pulls» a été ajoutée, permettant de visualiser non seulement les commits dans lesquels des modifications ont été effectuées, mais aussi le commit de fusion de ces modifications depuis une branche séparée.
- Uniformisation du traitement de l'entrée interactive dans tous les composants et ajout de l'appel fflush() après l'affichage de l'invite d'entrée, mais avant l'opération de lecture.
- Dans «git rebase», il est désormais possible de réappliquer tous les commits locaux sans avoir à exécuter au préalable l'opération «checkout», même si certains d'entre eux avaient été précédemment envoyés dans l'upstream.
- La valeur de la variable de configuration ‘pack.useSparse’ a été remplacée par ‘true’ pour activer par défaut les optimisations qui étaient auparavant proposées comme expérimentales.
- Une option «—autostash» a été ajoutée à «git merge».
- L'interface «sparse-checkout» a été améliorée.
- Plusieurs nouvelles actions ont été ajoutées dans «git update-ref —stdin»,
permettant de contrôler directement les transactions de mise à jour des références, par exemple, pour implémenter une mise à jour atomique en deux étapes des références dans plusieurs dépôts. - Des modèles userdiff pour les documents Markdown ont été ajoutés.
- La restriction sur l'exclusion de tous les chemins dans les modèles sparse-checkout, entraînant un arbre de travail vide, a été levée.
- L'opération «git restore —staged —worktree» utilise désormais par défaut le contenu de la branche «HEAD», au lieu de renvoyer une erreur.
- Le travail a été poursuivi pour la transition vers l'algorithme de hachage SHA-2 au lieu de SHA-1.
- Le code pour l'interaction avec GnuPG a été révisé.
Source : opennet.ru
