[{"data":1,"prerenderedAt":1340},["ShallowReactive",2],{"/fr-fr/blog/whats-new-in-git-2-47-0":3,"navigation-fr-fr":558,"banner-fr-fr":991,"footer-fr-fr":999,"blog-post-authors-fr-fr-Justin Tobler":1238,"blog-related-posts-fr-fr-whats-new-in-git-2-47-0":1253,"blog-promotions-fr-fr":1277,"next-steps-fr-fr":1331},{"id":4,"title":5,"authors":6,"body":8,"category":535,"date":536,"description":537,"extension":538,"externalUrl":539,"faq":539,"featured":540,"heroImage":541,"meta":542,"navigation":540,"path":543,"seo":544,"slug":549,"stem":550,"tags":551,"template":555,"updatedDate":556,"__hash__":557},"blogPosts/fr-fr/blog/whats-new-in-git-2-47-0.md","Nouveautés de Git 2.47.0",[7],"Justin Tobler",{"type":9,"value":10,"toc":527},"minimark",[11,22,27,48,80,87,112,125,144,158,180,189,192,201,205,219,222,320,323,331,335,338,341,344,347,355,360,364,383,389,401,413,421,426,430,439,446,463,481,485,493,523],[12,13,14,15,21],"p",{},"Le projet Git a récemment publié la ",[16,17,20],"a",{"href":18,"rel":19},"https://lore.kernel.org/git/xmqqa5fg9bsz.fsf@gitster.g/",[],"version 2.47.0 de Git",". Jetons un coup d'œil aux points forts de cette nouvelle version, comprenant des contributions de l'équipe Git de GitLab et de la communauté Git au sens large.",[23,24,26],"h2",{"id":25},"nouvelles-options-de-configuration-globales","Nouvelles options de configuration globales",[12,28,29,30,35,36,42,43,47],{},"Si vous suivez les dernières versions de Git, vous avez sûrement entendu parler du nouveau backend « reftable » introduit dans la ",[16,31,34],{"href":32,"rel":33},"https://about.gitlab.com/fr-fr/blog/whats-new-in-git-2-45-0/",[],"version 2.45.0 de Git",".\nAuparavant, pour initialiser un dépôt au ",[16,37,41],{"href":38,"rel":39,"title":40},"https://about.gitlab.com/fr-fr/blog/a-beginners-guide-to-the-git-reftable-format/",[],"Format reftable de Git","format « reftable »",", il fallait transmettre l'option ",[44,45,46],"code",{},"--ref-format"," à git-init(1) :",[49,50,55],"pre",{"className":51,"code":52,"language":53,"meta":54,"style":54},"language-sh shiki shiki-themes github-light","$ git init --ref-format reftable\n","sh","",[44,56,57],{"__ignoreMap":54},[58,59,62,66,70,73,77],"span",{"class":60,"line":61},"line",1,[58,63,65],{"class":64},"s7eDp","$",[58,67,69],{"class":68},"sYBdl"," git",[58,71,72],{"class":68}," init",[58,74,76],{"class":75},"sYu0t"," --ref-format",[58,78,79],{"class":68}," reftable\n",[12,81,82,83,86],{},"Avec la nouvelle version 2.47, Git dispose désormais de l'option de configuration ",[44,84,85],{},"init.defaultRefFormat",",\nlaquelle indique à Git quel backend de gestion des références utiliser lors de l'initialisation d'un\ndépôt. Cette dernière peut être utilisée pour remplacer le backend « fichiers » par défaut et commencer à utiliser le backend « reftable ». Pour la configuration, procédez comme suit :",[49,88,90],{"className":51,"code":89,"language":53,"meta":54,"style":54},"$ git config set --global init.defaultRefFormat reftable\n",[44,91,92],{"__ignoreMap":54},[58,93,94,96,98,101,104,107,110],{"class":60,"line":61},[58,95,65],{"class":64},[58,97,69],{"class":68},[58,99,100],{"class":68}," config",[58,102,103],{"class":68}," set",[58,105,106],{"class":75}," --global",[58,108,109],{"class":68}," init.defaultRefFormat",[58,111,79],{"class":68},[12,113,114,115,120,121,124],{},"Comme certains d'entre vous le savent peut-être déjà, le format de hachage d'objets utilisé par les dépôts Git est\négalement configurable. Par défaut, les dépôts sont initialisés pour utiliser le\nformat d'objet SHA-1. Il existe toutefois une alternative, le format SHA-256, qui offre davantage de sécurité et qui est plus évolutif. Pour en savoir plus, consultez notre ",[16,116,119],{"href":117,"rel":118},"https://about.gitlab.com/blog/sha256-support-in-gitaly/#what-is-sha-256%3F",[],"article dédié à la prise en charge de SHA-256 dans Gitaly",". Pour créer un dépôt SHA-256, vous devez transmettre l'option ",[44,122,123],{},"--object-format"," à git-init(1) :",[49,126,128],{"className":51,"code":127,"language":53,"meta":54,"style":54},"$ git init --object-format sha256\n",[44,129,130],{"__ignoreMap":54},[58,131,132,134,136,138,141],{"class":60,"line":61},[58,133,65],{"class":64},[58,135,69],{"class":68},[58,137,72],{"class":68},[58,139,140],{"class":75}," --object-format",[58,142,143],{"class":68}," sha256\n",[12,145,146,147,153,154,157],{},"Cette nouvelle version de ",[16,148,152],{"href":149,"rel":150,"title":151},"https://about.gitlab.com/fr-fr/blog/what-is-git/",[],"Qu'est-ce que Git ? ","Git"," inclut une autre option de configuration : ",[44,155,156],{},"init.defaultObjectFormat"," qui indique à Git le format d'objet à utiliser par défaut lors de l'initialisation d'un dépôt. Pour la configuration, procédez comme suit :",[49,159,161],{"className":51,"code":160,"language":53,"meta":54,"style":54},"$ git config set --global init.defaultObjectFormat sha256\n",[44,162,163],{"__ignoreMap":54},[58,164,165,167,169,171,173,175,178],{"class":60,"line":61},[58,166,65],{"class":64},[58,168,69],{"class":68},[58,170,100],{"class":68},[58,172,103],{"class":68},[58,174,106],{"class":75},[58,176,177],{"class":68}," init.defaultObjectFormat",[58,179,143],{"class":68},[12,181,182,183,188],{},"Il convient de noter que les dépôts SHA-256 ne sont pas interopérables avec les dépôts SHA-1\net que toutes les forges logicielles ne prennent pas en charge l'hébergement de dépôts SHA-256. GitLab\na récemment annoncé une ",[16,184,187],{"href":185,"rel":186},"https://about.gitlab.com/blog/gitlab-now-supports-sha256-repositories/",[],"prise en charge expérimentale pour les dépôts SHA-256"," pour celles et ceux qui souhaitent l'essayer.",[12,190,191],{},"Ces options fournissent un mécanisme utile pour commencer à utiliser ces fonctionnalités\nde dépôt plus simplement lors de l'initialisation d'un nouveau dépôt.",[12,193,194,195,200],{},"Ce projet a été mené par ",[16,196,199],{"href":197,"rel":198},"https://gitlab.com/pks-gitlab",[],"Patrick Steinhardt",".",[23,202,204],{"id":203},"nouvelle-sous-commande-pour-git-refs1","Nouvelle sous-commande pour git-refs(1)",[12,206,207,208,213,214,200],{},"La précédente version de Git avait introduit la commande ",[16,209,212],{"href":210,"rel":211},"https://git-scm.com/docs/git-refs",[],"git-refs(1)"," afin d'offrir un accès plus direct aux références d'un\ndépôt et fournissait la sous-commande « migrate » pour basculer d'un backend de gestion des références à un autre. Cette nouvelle version 2.47.0 introduit une nouvelle sous-commande « verify », qui permet à l'utilisateur de vérifier la cohérence de la base de données qui gère les références. Pour procéder à cette vérification dans un dépôt, il est courant d'utiliser la commande ",[16,215,218],{"href":216,"rel":217},"https://git-scm.com/docs/git-fsck/fr",[],"git-fsck(1)",[12,220,221],{},"Cette commande ne vérifie cependant pas explicitement la base de données qui gère les références du dépôt. Avec l'introduction du format de référence « reftable », lequel est un format binaire et donc plus difficile à inspecter manuellement, il est désormais encore plus important de mettre en place des outils pour combler cette lacune. Démontrons ce fait en configurant un dépôt avec une référence invalide :",[49,223,225],{"className":51,"code":224,"language":53,"meta":54,"style":54},"# The \"files\" backend is used so we can easily create an invalid reference.\n$ git init --ref-format files\n$ git commit --allow-empty -m \"init\"\n# A lone '@' is not a valid reference name.\n$ cp .git/refs/heads/main .git/refs/heads/@\n$ git refs verify\nerror: refs/heads/@: badRefName: invalid refname format\n",[44,226,227,233,247,266,272,286,299],{"__ignoreMap":54},[58,228,229],{"class":60,"line":61},[58,230,232],{"class":231},"sAwPA","# The \"files\" backend is used so we can easily create an invalid reference.\n",[58,234,236,238,240,242,244],{"class":60,"line":235},2,[58,237,65],{"class":64},[58,239,69],{"class":68},[58,241,72],{"class":68},[58,243,76],{"class":75},[58,245,246],{"class":68}," files\n",[58,248,250,252,254,257,260,263],{"class":60,"line":249},3,[58,251,65],{"class":64},[58,253,69],{"class":68},[58,255,256],{"class":68}," commit",[58,258,259],{"class":75}," --allow-empty",[58,261,262],{"class":75}," -m",[58,264,265],{"class":68}," \"init\"\n",[58,267,269],{"class":60,"line":268},4,[58,270,271],{"class":231},"# A lone '@' is not a valid reference name.\n",[58,273,275,277,280,283],{"class":60,"line":274},5,[58,276,65],{"class":64},[58,278,279],{"class":68}," cp",[58,281,282],{"class":68}," .git/refs/heads/main",[58,284,285],{"class":68}," .git/refs/heads/@\n",[58,287,289,291,293,296],{"class":60,"line":288},6,[58,290,65],{"class":64},[58,292,69],{"class":68},[58,294,295],{"class":68}," refs",[58,297,298],{"class":68}," verify\n",[58,300,302,305,308,311,314,317],{"class":60,"line":301},7,[58,303,304],{"class":64},"error:",[58,306,307],{"class":68}," refs/heads/@:",[58,309,310],{"class":68}," badRefName:",[58,312,313],{"class":68}," invalid",[58,315,316],{"class":68}," refname",[58,318,319],{"class":68}," format\n",[12,321,322],{},"Nous constatons effectivement que la référence invalide a été détectée et qu'un message d'erreur a été envoyé à l'utilisateur. Bien que cet outil ne soit probablement pas destiné à être utilisé par l'utilisateur final, il est particulièrement utile côté serveur pour garantir la cohérence des dépôts. À terme, l'objectif est d'intégrer cette commande à git-fsck(1) afin de fournir un moyen unifié d'exécuter les contrôles de cohérence des dépôts.",[12,324,325,326,200],{},"Ce projet a été mené par Jialuo She dans le cadre du programme Google Summer of Code. Pour\nen savoir plus, consultez le ",[16,327,330],{"href":328,"rel":329},"https://luolibrary.com/2024/08/25/GSoC-Final-Report/",[],"rapport du GSoC de Jialuo She",[23,332,334],{"id":333},"améliorations-relatives-aux-reftables","Améliorations relatives aux reftables",[12,336,337],{},"Cette nouvelle version inclut également des corrections pour certains bogues détectés dans le backend « reftable ». L'un d'entre eux est particulièrement intéressant et concerne la manière dont le compactage des tables était effectué.",[12,339,340],{},"Comme vous vous en souvenez peut-être, le backend « reftable » consiste en une série de tables\ncontenant l'état de toutes les références dans le dépôt. Chaque opération atomique de modifications de références entraîne l'écriture d'une nouvelle table, laquelle est alors enregistrée dans le fichier « tables.list ». Pour réduire le nombre de tables présentes, les tables sont compactées pour suivre une séquence géométrique en fonction de la taille du fichier après chaque mise à jour des références. Une fois les tables compactées, le fichier « tables.list » est mis à jour pour refléter le nouvel état des reftables sur le disque.",[12,342,343],{},"Par conception, l'écriture et le compactage simultanés des tables sont autorisés. La synchronisation à certains moments est contrôlée par l'utilisation de fichiers de verrouillage. Par exemple, lorsque le compactage commence, le fichier « tables.list » est d'abord verrouillé afin qu'il puisse être lu de manière cohérente, et les tables nécessitant un compactage peuvent également être verrouillées. Comme le compactage des tables peut prendre un certain temps, le verrouillage est levé et les écritures simultanées peuvent alors commencer. Cette méthode est sûre, car les processus d’écriture simultanés savent qu'ils ne doivent pas modifier les tables verrouillées sur le point d'être compactées. Une fois que les nouvelles tables compactées ont été écrites, le fichier « tables.list » est à nouveau verrouillé et est, cette fois-ci, mis à jour pour refléter le nouvel état des tables.",[12,345,346],{},"Un problème subsiste cependant : que se passe-t-il si une mise à jour de référence simultanée écrit une nouvelle table dans le fichier « tables.list » à mi-chemin du compactage des tables après que le verrouillage initial a été levé, mais avant que le nouveau fichier « tables.list » n'ait été écrit ? Dans ce cas, le processus de compactage ignore alors l'existence de la nouvelle table et réécrit donc le fichier « tables.list » sans inclure la nouvelle table. Cette situation a pour effet d'ignorer la mise à jour de l'écriture simultanée et d'empêcher l’ajout, la mise à jour ou la suppression des références.",[12,348,349,350,200],{},"Heureusement, la solution pour remédier à ce problème est assez simple. Lorsque le processus de compactage obtient le verrou pour écrire dans le fichier « tables.list », il doit d'abord vérifier si des mises à jour du fichier ont eu lieu et recharger le fichier. Cela permet de s'assurer que les mises à jour simultanées des tables sont également reflétées correctement. Pour plus d'informations sur cette correction, consultez ce\n",[16,351,354],{"href":352,"rel":353},"https://lore.kernel.org/git/cover.1722435214.git.ps@pks.im/",[],"fil de discussion",[12,356,194,357,200],{},[16,358,199],{"href":197,"rel":359},[],[23,361,363],{"id":362},"corrections-pour-git-maintenance1","Corrections pour git-maintenance(1)",[12,365,366,367,372,373,376,377,382],{},"Au fur et à mesure qu'un dépôt évolue, il est important qu'il soit correctement maintenu. Par\ndéfaut, Git exécute\n",[16,368,371],{"href":369,"rel":370},"https://git-scm.com/docs/git-maintenance",[],"git-maintenance(1)"," après certaines\nopérations pour maintenir le dépôt fonctionnel. Afin d'éviter une maintenance\ninutile, l'option ",[44,374,375],{},"--auto"," est spécifiée et utilise une heuristique définie pour déterminer si les tâches de maintenance doivent être exécutées. Bien que la commande puisse être\nconfigurée pour effectuer différentes tâches de maintenance, elle exécute simplement par défaut ",[16,378,381],{"href":379,"rel":380},"https://git-scm.com/docs/git-gc/fr",[],"git-gc(1)"," en arrière-plan, permettant ainsi à l'utilisateur de poursuivre ses activités.",[12,384,385,386,388],{},"Tout fonctionne comme prévu jusqu'à ce que la maintenance soit configurée pour effectuer des tâches supplémentaires, différentes de celles prévues par défaut. Dans ce cas, les tâches de maintenance configurées s'exécutent au premier plan et le processus de maintenance initial ne s'interrompt pas tant que toutes les tâches ne sont pas terminées. Seule la tâche « gc » s'exécute en arrière-plan comme prévu. En effet, git-gc(1) se détache malencontreusement lorsqu'elle est exécutée avec ",[44,387,375],{},", tandis que les autres tâches de maintenance n'ont aucun mécanisme pour le faire. Résultat ? Un ralentissement de certaines commandes Git, la maintenance automatique devant s'exécuter entièrement avant qu'elles ne puissent se terminer.",[12,390,391,392,395,396,400],{},"Cette nouvelle version résout ce problème en ajoutant à git-maintenance(1) l'option ",[44,393,394],{},"--detach",", qui permet à l'ensemble du processus git-maintenance(1) de s'exécuter en arrière-plan à la place des tâches individuelles. La maintenance automatique effectuée par Git a également été mise à jour pour utiliser cette nouvelle option. Pour plus d'informations sur cette correction, consultez ce ",[16,397,354],{"href":398,"rel":399},"https://lore.kernel.org/git/cover.1723533091.git.ps@pks.im/",[]," pour en savoir plus.",[12,402,403,404,409,410,412],{},"Il a été mentionné précédemment que l'auto-maintenance utilise un ensemble\nd'heuristiques pour déterminer si certaines opérations de maintenance doivent être effectuées ou non. Malheureusement, pour le backend « fichiers » de gestion des références, lorsque\n",[16,405,408],{"href":406,"rel":407},"https://git-scm.com/docs/git-pack-refs/fr",[],"git-pack-refs(1)"," s'exécute avec\nl'option ",[44,411,375],{},", il n'y a pas de telle heuristique, et toutes les références non compactées sont inconditionnellement compactées dans un fichier « packed-refs ». Pour les dépôts avec de nombreuses références, la réécriture du fichier « packed-refs » peut prendre beaucoup de temps.",[12,414,415,416,420],{},"Cette nouvelle version introduit également une heuristique qui décide s'il faut compacter\nles références non compactées dans le backend « fichiers ». Cette heuristique prend en compte la taille du fichier « packed-refs » existant et le nombre de références non compactées présentes dans le dépôt. Plus le fichier « packed-refs » est volumineux, plus le seuil du nombre de références non compactées est élevé avant que le compactage des références ne se produise. Cela permet de rendre moins agressif le compactage des références dans le backend « fichiers » tout en maintenant le dépôt dans un état correct. Consultez ce ",[16,417,354],{"href":418,"rel":419},"https://lore.kernel.org/git/cover.1725280479.git.ps@pks.im/",[],"\npour plus d'informations.",[12,422,194,423,200],{},[16,424,199],{"href":197,"rel":425},[],[23,427,429],{"id":428},"refactorisation-du-code-et-amélioration-de-la-maintenabilité","Refactorisation du code et amélioration de la maintenabilité",[12,431,432,433,438],{},"En plus des changements fonctionnels, un travail de refactorisation et de nettoyage du code est également en cours. Très précieuses, ces améliorations aident le projet à se rapprocher de son objectif de longue date qui est de créer une bibliothèque de librairies de ses composants internes. Pour en savoir plus, consultez cette récente\n",[16,434,437],{"href":435,"rel":436},"https://lore.kernel.org/git/eoy2sjhnul57g6crprxi3etgeuacjmgxpl4yllstih7woyuebm@bd62ib3fi2ju/",[],"mise à jour du fil de discussion"," sur la création d'une bibliothèque de librairies.",[12,440,441,442,445],{},"L'un des domaines d'amélioration concerne la résolution des fuites de mémoire. Le projet Git présente en effet un certain nombre de fuites de mémoire. Ces fuites ne posent généralement pas de problème puisqu'un processus Git ne s'exécute que pendant une courte période et qu'un nettoyage est effectué par le système par la suite. Dans un contexte de création d'une bibliothèque de librairies, il s'agit cependant d'un problème qu'il convient de résoudre. Les tests du projet peuvent être compilés à l'aide d'un outil conçu pour détecter les fuites. Cependant, en raison de la présence de fuites existantes, il est difficile de valider et de garantir que les nouveaux changements n'introduisent pas d'autres fuites. Des efforts continus ont été déployés pour corriger toutes les fuites de mémoire détectées par les tests existants dans le projet. Les tests qui n'ont détecté aucune fuite sont ensuite mis en évidence avec la mention ",[44,443,444],{},"TEST_PASSES_SANITIZE_LEAK=true"," afin d'indiquer qu'ils sont supposés être exempts de fuites à l'avenir. Le projet compte aujourd'hui 60 fichiers de test contenant des fuites de mémoire, contre 223 auparavant.",[12,447,448,449,452,453,455,456,458,459,462],{},"Une autre initiative en cours a pour but de réduire l'utilisation de variables globales\ndans l'ensemble du projet. L'une de ces fameuses variables globales est ",[44,450,451],{},"the_repository",", laquelle contient l'état du dépôt en cours d’utilisation et est référencée dans l'ensemble du projet. La nouvelle version Git 2.47.0 s'accompagne d'un certain nombre de correctifs qui suppriment l'utilisation de ",[44,454,451],{}," en faveur d'une transmission directe de la valeur là où c'est nécessaire. Les sous-systèmes du projet Git qui dépendent encore de ",[44,457,451],{}," définissent la variable ",[44,460,461],{},"USE_THE_REPOSITORY_VARIABLE",", permettant ainsi d'utiliser la variable globale. De cette manière, les sous-systèmes refs, config et path ne dépendent plus de son utilisation.",[12,464,194,465,469,470,475,476,200],{},[16,466,468],{"href":197,"rel":467},[],"Patrick Steinhardt","\navec l'aide de ",[16,471,474],{"href":472,"rel":473},"https://gitlab.com/jcaigitlab",[],"John Cai"," et\n",[16,477,480],{"href":478,"rel":479},"https://github.com/peff",[],"Jeff King",[23,482,484],{"id":483},"en-savoir-plus","En savoir plus",[12,486,487,488,492],{},"Cet article n'a mis en évidence que quelques-unes des contributions apportées par GitLab et la communauté Git au sens large pour cette nouvelle version. Vous pouvez approfondir ce sujet en lisant ",[16,489,491],{"href":18,"rel":490},[],"l'annonce officielle","\ndu projet Git et en consultant les ressources suivantes :",[494,495,496,504,510,516],"ul",{},[497,498,499],"li",{},[16,500,503],{"href":501,"rel":502},"https://about.gitlab.com/fr-fr/blog/whats-new-in-git-2-46-0/",[],"Nouveautés de Git 2.46.0",[497,505,506],{},[16,507,509],{"href":32,"rel":508},[],"Nouveautés de Git 2.45.0",[497,511,512],{},[16,513,515],{"href":38,"rel":514},[],"Guide pour les débutants sur le format reftable Git",[497,517,518],{},[16,519,522],{"href":520,"rel":521},"https://about.gitlab.com/fr-fr/blog/git-pull-vs-git-fetch-whats-the-difference/",[],"Git fetch vs git pull : quelle est la différence entre ces deux commandes Git ?",[524,525,526],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":54,"searchDepth":235,"depth":235,"links":528},[529,530,531,532,533,534],{"id":25,"depth":235,"text":26},{"id":203,"depth":235,"text":204},{"id":333,"depth":235,"text":334},{"id":362,"depth":235,"text":363},{"id":428,"depth":235,"text":429},{"id":483,"depth":235,"text":484},"open-source","2024-10-07","Découvrez les contributions de l'équipe Git de GitLab et de la communauté Git au sens large à la dernière version de Git.","md",null,true,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663691/Blog/Hero%20Images/AdobeStock_752438815.jpg",{},"/fr-fr/blog/whats-new-in-git-2-47-0",{"title":5,"description":537,"ogTitle":5,"ogDescription":537,"noIndex":545,"ogImage":541,"ogUrl":546,"ogSiteName":547,"ogType":548,"canonicalUrls":546},false,"https://about.gitlab.com/blog/whats-new-in-git-2-47-0","https://about.gitlab.com","article","whats-new-in-git-2-47-0","fr-fr/blog/whats-new-in-git-2-47-0",[552,553,554],"git","open source","community","BlogPost","2024-10-21","jdks0B2ErUpAoa1ci-UYkigknVQR3SlYX14IzWVUoH4",{"logo":559,"freeTrial":564,"sales":569,"login":574,"items":579,"search":906,"minimal":942,"duo":961,"switchNav":970,"pricingDeployment":981},{"config":560},{"href":561,"dataGaName":562,"dataGaLocation":563},"/fr-fr/","gitlab logo","header",{"text":565,"config":566},"Commencer un essai gratuit",{"href":567,"dataGaName":568,"dataGaLocation":563},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":570,"config":571},"Demander une démo",{"href":572,"dataGaName":573,"dataGaLocation":563},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":575,"config":576},"Connexion",{"href":577,"dataGaName":578,"dataGaLocation":563},"https://gitlab.com/users/sign_in/","sign in",[580,608,710,715,828,884],{"text":581,"config":582,"menu":584},"Plateforme",{"dataNavLevelOne":583},"platform",{"type":585,"columns":586},"cards",[587,593,601],{"title":581,"description":588,"link":589},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":590,"config":591},"Explorer notre plateforme",{"href":592,"dataGaName":583,"dataGaLocation":563},"/fr-fr/platform/",{"title":594,"description":595,"link":596},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":597,"config":598},"Découvrir GitLab Duo",{"href":599,"dataGaName":600,"dataGaLocation":563},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":602,"description":603,"link":604},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":484,"config":605},{"href":606,"dataGaName":607,"dataGaLocation":563},"/fr-fr/why-gitlab/","why gitlab",{"text":609,"left":540,"config":610,"menu":612},"Produit",{"dataNavLevelOne":611},"solutions",{"type":613,"link":614,"columns":618,"feature":689},"lists",{"text":615,"config":616},"Voir toutes les solutions",{"href":617,"dataGaName":611,"dataGaLocation":563},"/fr-fr/solutions/",[619,644,667],{"title":620,"description":621,"link":622,"items":627},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":623},{"icon":624,"href":625,"dataGaName":626,"dataGaLocation":563},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[628,632,635,640],{"text":629,"config":630},"CI/CD",{"href":631,"dataGaLocation":563,"dataGaName":629},"/fr-fr/solutions/continuous-integration/",{"text":594,"config":633},{"href":599,"dataGaLocation":563,"dataGaName":634},"gitlab duo agent platform - product menu",{"text":636,"config":637},"Gestion du code source",{"href":638,"dataGaLocation":563,"dataGaName":639},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":641,"config":642},"Livraison de logiciels automatisée",{"href":625,"dataGaLocation":563,"dataGaName":643},"Automated software delivery",{"title":645,"description":646,"link":647,"items":652},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":648},{"href":649,"dataGaName":650,"dataGaLocation":563,"icon":651},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[653,657,662],{"text":654,"config":655},"Tests de sécurité des applications",{"href":649,"dataGaName":656,"dataGaLocation":563},"Application security testing",{"text":658,"config":659},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":660,"dataGaLocation":563,"dataGaName":661},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":663,"config":664},"Conformité logicielle",{"href":665,"dataGaName":666,"dataGaLocation":563},"/fr-fr/solutions/software-compliance/","software compliance",{"title":668,"link":669,"items":674},"Mesures",{"config":670},{"icon":671,"href":672,"dataGaName":673,"dataGaLocation":563},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[675,679,684],{"text":676,"config":677},"Visibilité et mesures",{"href":672,"dataGaLocation":563,"dataGaName":678},"Visibility and Measurement",{"text":680,"config":681},"Gestion de la chaîne de valeur",{"href":682,"dataGaLocation":563,"dataGaName":683},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":685,"config":686},"Analyses et informations",{"href":687,"dataGaLocation":563,"dataGaName":688},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":690,"type":613,"items":691},"GitLab",[692,698,704],{"text":693,"config":694},"Entreprises",{"icon":695,"href":696,"dataGaLocation":563,"dataGaName":697},"Building","/fr-fr/enterprise/","enterprise",{"text":699,"config":700},"Pour les PME",{"icon":701,"href":702,"dataGaLocation":563,"dataGaName":703},"Work","/fr-fr/small-business/","small business",{"text":705,"config":706},"Pour le secteur public",{"icon":707,"href":708,"dataGaLocation":563,"dataGaName":709},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":711,"config":712},"Tarifs",{"href":713,"dataGaName":714,"dataGaLocation":563,"dataNavLevelOne":714},"/fr-fr/pricing/","pricing",{"text":716,"config":717,"menu":719},"Ressources",{"dataNavLevelOne":718},"resources",{"type":613,"link":720,"columns":724,"feature":817},{"text":721,"config":722},"Afficher toutes les ressources",{"href":723,"dataGaName":718,"dataGaLocation":563},"/fr-fr/resources/",[725,758,785],{"title":726,"items":727},"Premiers pas",[728,733,738,743,748,753],{"text":729,"config":730},"Installation",{"href":731,"dataGaName":732,"dataGaLocation":563},"/fr-fr/install/","install",{"text":734,"config":735},"Guides de démarrage",{"href":736,"dataGaName":737,"dataGaLocation":563},"/fr-fr/get-started/","quick setup checklists",{"text":739,"config":740},"Apprentissage",{"href":741,"dataGaLocation":563,"dataGaName":742},"https://university.gitlab.com/","learn",{"text":744,"config":745},"Documentation",{"href":746,"dataGaName":747,"dataGaLocation":563},"https://docs.gitlab.com/","product documentation",{"text":749,"config":750},"Vidéos sur les bonnes pratiques",{"href":751,"dataGaName":752,"dataGaLocation":563},"/fr-fr/getting-started-videos/","best practice videos",{"text":754,"config":755},"Intégrations",{"href":756,"dataGaName":757,"dataGaLocation":563},"/fr-fr/integrations/","integrations",{"title":759,"items":760},"Découvrir",[761,766,771,776,780],{"text":762,"config":763},"Témoignages clients",{"href":764,"dataGaName":765,"dataGaLocation":563},"/fr-fr/customers/","customer success stories",{"text":767,"config":768},"Blog",{"href":769,"dataGaName":770,"dataGaLocation":563},"/fr-fr/blog/","blog",{"text":772,"config":773},"Demo Hub",{"href":774,"dataGaName":775,"dataGaLocation":563},"/fr-fr/demo-hub/","demo hub",{"text":777,"config":778},"The Source",{"href":779,"dataGaName":770,"dataGaLocation":563},"/fr-fr/the-source/",{"text":781,"config":782},"Travail à distance",{"href":783,"dataGaName":784,"dataGaLocation":563},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":786,"items":787},"Connecter",[788,793,798,802,807,812],{"text":789,"config":790},"Services GitLab",{"href":791,"dataGaName":792,"dataGaLocation":563},"/fr-fr/services/","services",{"text":794,"config":795},"Contribuer",{"href":796,"dataGaName":797,"dataGaLocation":563},"https://contributors.gitlab.com","contribute",{"text":799,"config":800},"Communauté",{"href":801,"dataGaName":554,"dataGaLocation":563},"/community/",{"text":803,"config":804},"Forum",{"href":805,"dataGaName":806,"dataGaLocation":563},"https://forum.gitlab.com/","forum",{"text":808,"config":809},"Événements",{"href":810,"dataGaName":811,"dataGaLocation":563},"/events/","events",{"text":813,"config":814},"Partenaires",{"href":815,"dataGaName":816,"dataGaLocation":563},"/fr-fr/partners/","partners",{"config":818,"title":821,"text":822,"link":823},{"background":819,"textColor":820},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Nouveautés de GitLab","Découvrez les dernières fonctionnalités et améliorations.",{"text":824,"config":825},"Lire les articles les plus récents",{"href":826,"dataGaName":827,"dataGaLocation":563},"/fr-fr/whats-new/","whats new",{"text":829,"config":830,"menu":832},"Société",{"dataNavLevelOne":831},"company",{"type":613,"columns":833},[834],{"items":835},[836,841,847,849,854,859,864,869,874,879],{"text":837,"config":838},"À propos",{"href":839,"dataGaName":840,"dataGaLocation":563},"/fr-fr/company/","about",{"text":842,"config":843,"footerGa":846},"Carrières",{"href":844,"dataGaName":845,"dataGaLocation":563},"/jobs/","jobs",{"dataGaName":845},{"text":808,"config":848},{"href":810,"dataGaName":811,"dataGaLocation":563},{"text":850,"config":851},"Leadership",{"href":852,"dataGaName":853,"dataGaLocation":563},"/company/team/e-group/","leadership",{"text":855,"config":856},"Manuel",{"href":857,"dataGaName":858,"dataGaLocation":563},"https://handbook.gitlab.com/","handbook",{"text":860,"config":861},"Relations avec les investisseurs",{"href":862,"dataGaName":863,"dataGaLocation":563},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":865,"config":866},"Trust Center",{"href":867,"dataGaName":868,"dataGaLocation":563},"/fr-fr/security/","trust center",{"text":870,"config":871},"Centre pour la transparence de l'IA",{"href":872,"dataGaName":873,"dataGaLocation":563},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":875,"config":876},"Newsletter",{"href":877,"dataGaName":878,"dataGaLocation":563},"/company/contact/#contact-forms","newsletter",{"text":880,"config":881},"Presse",{"href":882,"dataGaName":883,"dataGaLocation":563},"/press/","press",{"text":885,"config":886,"menu":887},"Nous contacter",{"dataNavLevelOne":831},{"type":613,"columns":888},[889],{"items":890},[891,896,901],{"text":892,"config":893},"Contacter l'équipe commerciale",{"href":894,"dataGaName":895,"dataGaLocation":563},"/fr-fr/sales/","talk to sales",{"text":897,"config":898},"Assistance GitLab",{"href":899,"dataGaName":900,"dataGaLocation":563},"https://support.gitlab.com/hc/en-us","support portal",{"text":902,"config":903},"Portail clients GitLab",{"href":904,"dataGaName":905,"dataGaLocation":563},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":907,"login":908,"suggestions":915},"Fermer",{"text":909,"link":910},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":911,"config":912},"GitLab.com",{"href":577,"dataGaName":913,"dataGaLocation":914},"search login","search",{"text":916,"default":917},"Suggestions",[918,921,926,928,933,938],{"text":594,"config":919},{"href":599,"dataGaName":920,"dataGaLocation":914},"GitLab Duo Agent Platform",{"text":922,"config":923},"Suggestions de code (IA)",{"href":924,"dataGaName":925,"dataGaLocation":914},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":629,"config":927},{"href":631,"dataGaName":629,"dataGaLocation":914},{"text":929,"config":930},"GitLab sur AWS",{"href":931,"dataGaName":932,"dataGaLocation":914},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":934,"config":935},"GitLab sur Google Cloud",{"href":936,"dataGaName":937,"dataGaLocation":914},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":939,"config":940},"Pourquoi utiliser GitLab ?",{"href":606,"dataGaName":941,"dataGaLocation":914},"Why GitLab?",{"freeTrial":943,"mobileIcon":948,"desktopIcon":953,"secondaryButton":956},{"text":944,"config":945},"Commencer votre essai gratuit",{"href":946,"dataGaName":568,"dataGaLocation":947},"https://gitlab.com/-/trials/new/","nav",{"altText":949,"config":950},"Icône GitLab",{"src":951,"dataGaName":952,"dataGaLocation":947},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":949,"config":954},{"src":955,"dataGaName":952,"dataGaLocation":947},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":957,"config":958},"Commencer",{"href":959,"dataGaName":960,"dataGaLocation":947},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":962,"mobileIcon":966,"desktopIcon":968},{"text":963,"config":964},"En savoir plus sur GitLab Duo",{"href":599,"dataGaName":965,"dataGaLocation":947},"gitlab duo",{"altText":949,"config":967},{"src":951,"dataGaName":952,"dataGaLocation":947},{"altText":949,"config":969},{"src":955,"dataGaName":952,"dataGaLocation":947},{"button":971,"mobileIcon":976,"desktopIcon":978},{"text":972,"config":973},"/switch",{"href":974,"dataGaName":975,"dataGaLocation":947},"#contact","switch",{"altText":949,"config":977},{"src":951,"dataGaName":952,"dataGaLocation":947},{"altText":949,"config":979},{"src":980,"dataGaName":952,"dataGaLocation":947},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":982,"mobileIcon":987,"desktopIcon":989},{"text":983,"config":984},"Retour aux tarifs",{"href":713,"dataGaName":985,"dataGaLocation":947,"icon":986},"back to pricing","GoBack",{"altText":949,"config":988},{"src":951,"dataGaName":952,"dataGaLocation":947},{"altText":949,"config":990},{"src":955,"dataGaName":952,"dataGaLocation":947},{"title":992,"button":993,"config":997},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":484,"config":994},{"href":995,"dataGaName":996,"dataGaLocation":563},"/fr-fr/gitlab-orbit/","orbit",{"layout":998,"disabled":545},"release",{"data":1000},{"text":1001,"source":1002,"edit":1008,"contribute":1013,"config":1017,"items":1022,"minimal":1230},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":1003,"config":1004},"Afficher le code source de la page",{"href":1005,"dataGaName":1006,"dataGaLocation":1007},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1009,"config":1010},"Modifier cette page",{"href":1011,"dataGaName":1012,"dataGaLocation":1007},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":794,"config":1014},{"href":1015,"dataGaName":1016,"dataGaLocation":1007},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1018,"facebook":1019,"youtube":1020,"linkedin":1021},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1023,1069,1122,1165,1197],{"title":711,"links":1024,"subMenu":1039},[1025,1029,1034],{"text":1026,"config":1027},"Voir les forfaits",{"href":713,"dataGaName":1028,"dataGaLocation":1007},"view plans",{"text":1030,"config":1031},"GitLab Premium",{"href":1032,"dataGaName":1033,"dataGaLocation":1007},"/fr-fr/pricing/premium/","why premium",{"text":1035,"config":1036},"GitLab Ultimate",{"href":1037,"dataGaName":1038,"dataGaLocation":1007},"/fr-fr/pricing/ultimate/","why ultimate",[1040],{"title":885,"links":1041},[1042,1044,1046,1049,1054,1059,1064],{"text":892,"config":1043},{"href":894,"dataGaName":573,"dataGaLocation":1007},{"text":897,"config":1045},{"href":899,"dataGaName":900,"dataGaLocation":1007},{"text":1047,"config":1048},"Portail clients",{"href":904,"dataGaName":905,"dataGaLocation":1007},{"text":1050,"config":1051},"Statut",{"href":1052,"dataGaName":1053,"dataGaLocation":1007},"https://status.gitlab.com/","status",{"text":1055,"config":1056},"Conditions d'utilisation",{"href":1057,"dataGaName":1058,"dataGaLocation":1007},"/terms/","terms of use",{"text":1060,"config":1061},"Politique de confidentialité",{"href":1062,"dataGaName":1063,"dataGaLocation":1007},"/fr-fr/privacy/","privacy statement",{"text":1065,"config":1066},"Gestion des cookies",{"dataGaName":1067,"dataGaLocation":1007,"id":1068,"isOneTrustButton":540},"cookie preferences","ot-sdk-btn",{"title":609,"links":1070,"subMenu":1079},[1071,1075],{"text":1072,"config":1073},"Plateforme DevSecOps",{"href":592,"dataGaName":1074,"dataGaLocation":1007},"devsecops platform",{"text":1076,"config":1077},"Développement assisté par l'IA",{"href":599,"dataGaName":1078,"dataGaLocation":1007},"ai-assisted development",[1080],{"title":1081,"links":1082},"Thèmes",[1083,1087,1092,1097,1102,1107,1112,1117],{"text":629,"config":1084},{"href":1085,"dataGaName":1086,"dataGaLocation":1007},"/fr-fr/topics/ci-cd/","cicd",{"text":1088,"config":1089},"GitOps",{"href":1090,"dataGaName":1091,"dataGaLocation":1007},"/fr-fr/topics/gitops/","gitops",{"text":1093,"config":1094},"DevOps",{"href":1095,"dataGaName":1096,"dataGaLocation":1007},"/fr-fr/topics/devops/","devops",{"text":1098,"config":1099},"Contrôle de version",{"href":1100,"dataGaName":1101,"dataGaLocation":1007},"/fr-fr/topics/version-control/","version control",{"text":1103,"config":1104},"DevSecOps",{"href":1105,"dataGaName":1106,"dataGaLocation":1007},"/fr-fr/topics/devsecops/","devsecops",{"text":1108,"config":1109},"Cloud-native",{"href":1110,"dataGaName":1111,"dataGaLocation":1007},"/fr-fr/topics/cloud-native/","cloud native",{"text":1113,"config":1114},"IA pour la programmation",{"href":1115,"dataGaName":1116,"dataGaLocation":1007},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":1118,"config":1119},"IA agentique",{"href":1120,"dataGaName":1121,"dataGaLocation":1007},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1123,"links":1124},"Solutions",[1125,1128,1130,1135,1138,1141,1144,1147,1149,1152,1155,1160],{"text":654,"config":1126},{"href":649,"dataGaName":1127,"dataGaLocation":1007},"Application Security Testing",{"text":641,"config":1129},{"href":625,"dataGaName":626,"dataGaLocation":1007},{"text":1131,"config":1132},"Développement Agile",{"href":1133,"dataGaName":1134,"dataGaLocation":1007},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":636,"config":1136},{"href":638,"dataGaName":1137,"dataGaLocation":1007},"source code management",{"text":629,"config":1139},{"href":631,"dataGaName":1140,"dataGaLocation":1007},"continuous integration & delivery",{"text":680,"config":1142},{"href":682,"dataGaName":1143,"dataGaLocation":1007},"value stream management",{"text":1088,"config":1145},{"href":1146,"dataGaName":1091,"dataGaLocation":1007},"/fr-fr/solutions/gitops/",{"text":693,"config":1148},{"href":696,"dataGaName":697,"dataGaLocation":1007},{"text":1150,"config":1151},"PME",{"href":702,"dataGaName":703,"dataGaLocation":1007},{"text":1153,"config":1154},"Secteur public",{"href":708,"dataGaName":709,"dataGaLocation":1007},{"text":1156,"config":1157},"Éducation",{"href":1158,"dataGaName":1159,"dataGaLocation":1007},"/fr-fr/solutions/education/","education",{"text":1161,"config":1162},"Services financiers",{"href":1163,"dataGaName":1164,"dataGaLocation":1007},"/fr-fr/solutions/finance/","financial services",{"title":716,"links":1166},[1167,1169,1171,1173,1176,1178,1181,1183,1185,1187,1189,1191,1193,1195],{"text":729,"config":1168},{"href":731,"dataGaName":732,"dataGaLocation":1007},{"text":734,"config":1170},{"href":736,"dataGaName":737,"dataGaLocation":1007},{"text":739,"config":1172},{"href":741,"dataGaName":742,"dataGaLocation":1007},{"text":744,"config":1174},{"href":746,"dataGaName":1175,"dataGaLocation":1007},"docs",{"text":767,"config":1177},{"href":769,"dataGaName":770,"dataGaLocation":1007},{"text":1179,"config":1180},"Nouveautés",{"href":826,"dataGaName":827,"dataGaLocation":1007},{"text":762,"config":1182},{"href":764,"dataGaName":765,"dataGaLocation":1007},{"text":781,"config":1184},{"href":783,"dataGaName":784,"dataGaLocation":1007},{"text":789,"config":1186},{"href":791,"dataGaName":792,"dataGaLocation":1007},{"text":794,"config":1188},{"href":796,"dataGaName":797,"dataGaLocation":1007},{"text":799,"config":1190},{"href":801,"dataGaName":554,"dataGaLocation":1007},{"text":803,"config":1192},{"href":805,"dataGaName":806,"dataGaLocation":1007},{"text":808,"config":1194},{"href":810,"dataGaName":811,"dataGaLocation":1007},{"text":813,"config":1196},{"href":815,"dataGaName":816,"dataGaLocation":1007},{"title":829,"links":1198},[1199,1201,1203,1205,1207,1209,1214,1219,1221,1223,1225],{"text":837,"config":1200},{"href":839,"dataGaName":831,"dataGaLocation":1007},{"text":842,"config":1202},{"href":844,"dataGaName":845,"dataGaLocation":1007},{"text":850,"config":1204},{"href":852,"dataGaName":853,"dataGaLocation":1007},{"text":855,"config":1206},{"href":857,"dataGaName":858,"dataGaLocation":1007},{"text":860,"config":1208},{"href":862,"dataGaName":863,"dataGaLocation":1007},{"text":1210,"config":1211},"Développement durable",{"href":1212,"dataGaName":1213,"dataGaLocation":1007},"/sustainability/","Sustainability",{"text":1215,"config":1216},"Diversité, inclusion et appartenance (DIB)",{"href":1217,"dataGaName":1218,"dataGaLocation":1007},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":865,"config":1220},{"href":867,"dataGaName":868,"dataGaLocation":1007},{"text":875,"config":1222},{"href":877,"dataGaName":878,"dataGaLocation":1007},{"text":880,"config":1224},{"href":882,"dataGaName":883,"dataGaLocation":1007},{"text":1226,"config":1227},"Déclaration de transparence sur l'esclavage moderne",{"href":1228,"dataGaName":1229,"dataGaLocation":1007},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1231},[1232,1234,1236],{"text":1055,"config":1233},{"href":1057,"dataGaName":1058,"dataGaLocation":1007},{"text":1065,"config":1235},{"dataGaName":1067,"dataGaLocation":1007,"id":1068,"isOneTrustButton":540},{"text":1060,"config":1237},{"href":1062,"dataGaName":1063,"dataGaLocation":1007},[1239],{"id":1240,"title":7,"body":539,"config":1241,"content":1243,"description":539,"extension":1247,"meta":1248,"navigation":540,"path":1249,"seo":1250,"stem":1251,"__hash__":1252},"blogAuthors/en-us/blog/authors/justin-tobler.yml",{"template":1242},"BlogAuthor",{"name":7,"config":1244},{"headshot":1245,"ctfId":1246},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664737/Blog/Author%20Headshots/james_tobler_headshot.png","5pnOIbNI1Sc5IFnReNHNtv","yml",{},"/en-us/blog/authors/justin-tobler",{},"en-us/blog/authors/justin-tobler","fZs0fJVrV3MQT0RHzrMvziLDriL7K4hf9Db4QlPsRvA",[1254,1262,1269],{"title":1255,"description":1256,"heroImage":1257,"category":535,"date":1258,"authors":1259,"slug":1261,"externalUrl":539},"Nouveautés de Git 2.55.0","Découvrez les nouveautés de Git 2.55 : commande fixup de git-history(1), daemon fsmonitor pour Linux, push vers des groupes de dépôts distants et plus encore.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1782732487/ztwgrvlolpifo01vj8qc.png","2026-07-01",[1260],"Toon Claes","whats-new-in-git-2-55-0",{"title":1263,"description":1264,"heroImage":1265,"category":535,"date":1266,"authors":1267,"slug":1268,"externalUrl":539},"Nouveautés de Git 2.54.0","Découvrez les contributions à cette release de Git 2.54.0, notamment la nouvelle maintenance des dépôts, une nouvelle commande pour modifier l'historique des commits, le remplacement de git-sizer(1) et plus encore.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1776711651/sj7xxyyuimlarswbyft5.png","2026-04-27",[199],"whats-new-in-git-2-54-0",{"title":1270,"description":1271,"heroImage":1272,"category":535,"date":1273,"authors":1274,"slug":1276,"externalUrl":539},"GitLab AI Hackathon 2026 : découvrez les gagnants","Près de 7 000 développeurs ont créé plus de 600 agents et flows d'IA sur GitLab Duo Agent Platform. Découvrez les gagnants et leurs projets.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776457632/llddiylsgwuze0u1rjks.png","2026-04-22",[1275],"Nick Veenhof","gitlab-ai-hackathon-2026-meet-the-winners",{"promotions":1278},[1279,1293,1305,1317],{"id":1280,"categories":1281,"header":1283,"text":1284,"button":1285,"image":1290},"ai-modernization",[1282],"ai","L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1286,"config":1287},"Obtenez votre score de maturité IA",{"href":1288,"dataGaName":1289,"dataGaLocation":770},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1291},{"src":1292},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1294,"categories":1295,"header":1297,"text":1284,"button":1298,"image":1302},"devops-modernization",[1296,1106],"product","Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1299,"config":1300},"Obtenez votre score de maturité DevOps",{"href":1301,"dataGaName":1289,"dataGaLocation":770},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1303},{"src":1304},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1306,"categories":1307,"header":1309,"text":1284,"button":1310,"image":1314},"security-modernization",[1308],"security","Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1311,"config":1312},"Obtenez votre score de maturité en matière de sécurité",{"href":1313,"dataGaName":1289,"dataGaLocation":770},"/fr-fr/assessments/security-modernization-assessment/",{"config":1315},{"src":1316},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1318,"paths":1319,"header":1322,"text":1323,"button":1324,"image":1329},"github-azure-migration",[1320,1321],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Votre équipe est-elle prête pour la migration de GitHub vers Azure ?","GitHub a déjà commencé sa migration vers Azure. Découvrez ce que cela signifie pour vous.",{"text":1325,"config":1326},"Découvrez les différences entre GitLab et GitHub",{"href":1327,"dataGaName":1328,"dataGaLocation":770},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1330},{"src":1304},{"header":1332,"blurb":1333,"button":1334,"secondaryButton":1338},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":565,"config":1335},{"href":1336,"dataGaName":568,"dataGaLocation":1337},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":892,"config":1339},{"href":894,"dataGaName":573,"dataGaLocation":1337},1786803765903]