Git 2.54

Git 2.54

Présenté publication d'un systÚme de gestion distribué de textes originaux Git 2.54. Git se caractérise par sa haute performance et fournit des outils de développement non linéaire basés sur la branchement et la fusion de branches. Pour garantir l'intégrité de l'historique et la résistance aux modifications « rétroactives », il utilise un hachage implicite de tout l'historique précédent dans chaque commit, ainsi que la certification par des signatures numériques des développeurs pour les tags et commits individuels. Code Git est distribué sous licence GPLv2+.

Comparé à la version précédente, la nouvelle version a apporté 770 modifications, préparées avec la participation de 137 développeurs (66 ont participé au développement de Git pour la premiÚre fois).

Principales nouveautés:

  • La commande «git history» a Ă©tĂ© mise en Ɠuvre, offrant des capacitĂ©s expĂ©rimentales pour réécrire l'historique des modifications, plus simples et plus sĂ»res Ă  utiliser que le rebase des commits avec la commande git rebase. Deux opĂ©rations sont fournies :

    • git history reword pour réécrire le message dans le commit spĂ©cifiĂ© sans modifier l'arbre de travail et l'index (Ă  l'exception de la note, le reste demeure intact). Par exemple, pour corriger une faute de frappe.
    • git history split pour diviser de maniĂšre interactive le commit spĂ©cifiĂ© en deux commits diffĂ©rents en dĂ©plaçant des parties sĂ©lectionnĂ©es du commit d'origine vers un commit supplĂ©mentaire.

    Dans les futures versions, l'ajout de commandes supplémentaires est prévu : git history fixup pour corriger un commit, git history drop pour supprimer un commit, git history reorder pour modifier l'ordre des commits et git history squash pour fusionner des commits.

  • Une nouvelle mĂ©thode de dĂ©finition des gestionnaires (hook) dans les fichiers de configuration a Ă©tĂ© mise en Ɠuvre. Au lieu de placer des scripts de gestionnaires dans le rĂ©pertoire .git/hooks de chaque dĂ©pĂŽt, les commandes pour appeler les gestionnaires peuvent dĂ©sormais ĂȘtre spĂ©cifiĂ©es directement dans les fichiers de configuration. Les rĂ©glages peuvent ĂȘtre liĂ©s au dĂ©pĂŽt ou spĂ©cifiĂ©s dans des fichiers de configuration applicables Ă  tous les dĂ©pĂŽts (/etc/gitconfig) ou aux dĂ©pĂŽts de l'utilisateur (~/.gitconfig). Il est possible de lier plusieurs gestionnaires Ă  un mĂȘme Ă©vĂ©nement. Les scripts dans .git/hooks continuent Ă  ĂȘtre appelĂ©s, mais ils sont exĂ©cutĂ©s aprĂšs les gestionnaires provenant des fichiers de configuration. Pour voir la liste des gestionnaires, il convient d'utiliser la commande git hook list, et pour dĂ©sactiver sĂ©lectivement l'appel des gestionnaires, le rĂ©glage hook..enabled = false :

[hook "linter"] event = pre-commit command = ~\/bin\/linter —cpp20 [hook "no-leaks"] event = pre-commit command = ~\/bin\/leak-detector $ git hook list pre-commit global linter ~\/bin\/linter —cpp20 local no-leaks ~\/bin\/leak-detector

  • Dans l'Ă©quipe «git maintenance» la stratĂ©gie par dĂ©faut utilisĂ©e est gĂ©omĂ©trique (git config set maintenance.strategy geometric), ce qui permet de rĂ©duire le temps de maintenance des grands monorepo. Par rapport Ă  la stratĂ©gie prĂ©cĂ©demment utilisĂ©e, qui reposait sur la logique de la commande git gc, la nouvelle stratĂ©gie Ă©vite de rĂ©emballer tous les objets et exclut les opĂ©rations trop gourmandes en ressources, comme la fusion de tous les fichiers pack (lorsque cela est possible, la fusion se fait par parties et sans nettoyage des objets supprimĂ©s).
  • La base de donnĂ©es des objets (ODB) et les API associĂ©es ont Ă©tĂ© rĂ©visĂ©es pour s'appuyer sur une nouvelle architecture utilisant des backends plugables. La restructuration effectuĂ©e abstrait le format de stockage des objets et permettra Ă  terme d'implĂ©menter des fonctionnalitĂ©s telles que des backends alternatifs et des formats d'objets, par exemple pour un stockage plus efficace de gros fichiers binaires ou pour optimiser le fonctionnement de grands services d'hĂ©bergement git.
  • Dans l'Ă©quipe «structure du dĂ©pĂŽt git», fournissant des informations sur la structure du dĂ©pĂŽt, a Ă©tĂ© conçue pour afficher non seulement la taille totale, mais aussi pour montrer les plus gros objets de chaque type, ce qui permet d'Ă©valuer la taille sans utiliser d'outil tiers. git-sizer.

$ git repo structure 
 | * Plus gros objets | | | * Commits | | | * Taille maximale [1] | 17,23 KiB | | * Parents maximums [2] | 10 | | * Arbres | | | * Taille maximale [3] | 58,85 KiB | | * Entrées maximales [4] | 1,18 k | | * Blobs | | | * Taille maximale [5] | 1019,51 KiB | | * Tags | | | * Taille maximale [6] | 7,13 KiB |

  • Dans l'Ă©quipe «git replay», utilisĂ© Ă  la place de git rebase pour recrĂ©er l'historique sur le serveur sans l'arbre de travail, inclut par dĂ©faut une mise Ă  jour atomique des rĂ©fĂ©rences (au lieu d'afficher une liste de commandes update-ref Ă  exĂ©cuter manuellement), implĂ©mente l'option —revert pour annuler les modifications d'une sĂ©rie de commits, Ă©limine les commits vides rĂ©sultants et permet la recrĂ©ation de l'historique jusqu'au commit racine.
  • Dans «git rev-list» et des commandes similaires, une option —maximal-only a Ă©tĂ© ajoutĂ©e pour afficher uniquement les commits inaccessibles par d'autres commits.
  • Dans la commande «git repo info», une option —keys a Ă©tĂ© ajoutĂ©e pour afficher la liste de toutes les clĂ©s connues.
  • Dans l'Ă©quipe «git add -p» Lors de la navigation entre les blocs de code Ă  l'aide des touches « J » et « K », les blocs dĂ©jĂ  approuvĂ©s et ignorĂ©s sont marquĂ©s. Une option —no-auto-advance a Ă©tĂ© ajoutĂ©e pour dĂ©sactiver le passage automatique au fichier suivant, permettant de revenir Ă  des fichiers antĂ©rieurs avant le commit.
  • Optimisation de l'interface web «gitweb» pour une utilisation sur des appareils mobiles.
  • Dans l'Ă©quipe «git apply –directory» avant utilisation, une normalisation des chemins de fichiers a Ă©tĂ© assurĂ©e, tels que .\/un\/..\/normalized\/path.
  • La possibilitĂ© d'ajouter des sous-commandes personnalisĂ©es en plaçant des fichiers git- dans le rĂ©pertoire des fichiers exĂ©cutables a Ă©tĂ© documentĂ©e.
  • Dans la commande «git send-email» le support des certificats clients a Ă©tĂ© ajoutĂ©.
  • Pour la commande «git status», une configuration status.compareBranches a Ă©tĂ© mise en Ɠuvre, permettant d’indiquer les branches avec lesquelles la branche actuelle sera comparĂ©e :

[status] compareBranches = @{upstream} @{push}

  • Dans «git rebase» une option —trailer a Ă©tĂ© ajoutĂ©e pour simplifier l'ajout de mĂ©tadonnĂ©es Ă  tous les commits :

git rebase —trailer "Reviewed-by: Test "`

  • Dans la commande «git fast-import» la possibilitĂ© de remplacer les signatures pour des commits devenus invalides aprĂšs importation a Ă©tĂ© ajoutĂ©e.
  • Ajout du support de l'emballage (compaction) des indices multi-pack MIDX (multi-pack index), qui combine les petites couches de l'indice MIDX avec les informations de disponibilitĂ© des objets et les fichiers bitmap associĂ©s, permettant de rĂ©duire le nombre de couches accumulĂ©es dans des dĂ©pĂŽts anciens.
  • Dans la commande git backfill, la possibilitĂ© d’indiquer des rĂ©visions (plages de commits) et des masques de chemins (pathspec) pour limiter les parties de l'historique des modifications Ă  tĂ©lĂ©charger a Ă©tĂ© mise en Ɠuvre :

git backfill main~100..main git backfill — ‘*.c’

  • Des formes alternatives pour appeler la commande git config list – git config -l et git config —list ont Ă©tĂ© ajoutĂ©es.
  • L'utilisation de caractĂšres non-ASCII dans les noms des alias de commandes dĂ©finis dans le fichier de configuration a Ă©tĂ© autorisĂ©e :

[alias "fetch"] command = fetch

  • L'affichage des signatures dont la validitĂ© des clĂ©s GPG a expirĂ©, mais qui Ă©taient valides au moment de la signature du commit, a Ă©tĂ© modifiĂ©. De telles signatures sont dĂ©sormais affichĂ©es comme correctes avec une note sur l'expiration de la clĂ© (auparavant, elles Ă©taient surlignĂ©es en rouge, ce qui donnait une impression d'invaliditĂ©).
  • Lors de l'accĂšs aux dĂ©pĂŽts via HTTP, un traitement de l'erreur avec le code 429 (Trop de demandes) a Ă©tĂ© mis en place. Les requĂȘtes qui se sont soldĂ©es par cette erreur sont dĂ©sormais considĂ©rĂ©es non pas comme un problĂšme fatal, mais comme une erreur temporaire, pour laquelle il convient de rĂ©essayer aprĂšs un certain temps. Le dĂ©lai avant la nouvelle tentative est dĂ©fini via l'option http.retryAfter, le nombre de tentatives – http.maxRetries, et le temps d'attente – http.maxRetryTime.

Source : linux.org.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