[{"data":1,"prerenderedAt":1513},["ShallowReactive",2],{"/fr-fr/blog/categories/open-source/page/2":3,"navigation-fr-fr":21,"banner-fr-fr":456,"footer-fr-fr":464,"open-source-category-page-total-items-fr-fr":703,"open-source-category-page-featured-fr-fr":704,"open-source-category-page-2-fr-fr":1453},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":11,"description":6,"extension":13,"meta":14,"navigation":15,"path":16,"seo":17,"slug":6,"stem":19,"testContent":6,"type":6,"__hash__":20},"blogCategories/fr-fr/blog/categories/open-source.yml","Open Source",null,{"template":8,"slug":9,"hide":10},"BlogCategory","open-source",false,{"name":12},"Open source","yml",{},true,"/fr-fr/blog/categories/open-source",{"title":12,"description":18},"Browse articles related to Open source on the GitLab Blog","fr-fr/blog/categories/open-source","rj3ZmgYeIL4rq70hMj1N46cv3zwho00yhlPs_8_a4zo",{"logo":22,"freeTrial":27,"sales":32,"login":37,"items":42,"search":371,"minimal":407,"duo":426,"switchNav":435,"pricingDeployment":446},{"config":23},{"href":24,"dataGaName":25,"dataGaLocation":26},"/fr-fr/","gitlab logo","header",{"text":28,"config":29},"Commencer un essai gratuit",{"href":30,"dataGaName":31,"dataGaLocation":26},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":33,"config":34},"Demander une démo",{"href":35,"dataGaName":36,"dataGaLocation":26},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":38,"config":39},"Connexion",{"href":40,"dataGaName":41,"dataGaLocation":26},"https://gitlab.com/users/sign_in/","sign in",[43,72,174,179,293,349],{"text":44,"config":45,"menu":47},"Plateforme",{"dataNavLevelOne":46},"platform",{"type":48,"columns":49},"cards",[50,56,64],{"title":44,"description":51,"link":52},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":53,"config":54},"Explorer notre plateforme",{"href":55,"dataGaName":46,"dataGaLocation":26},"/fr-fr/platform/",{"title":57,"description":58,"link":59},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":60,"config":61},"Découvrir GitLab Duo",{"href":62,"dataGaName":63,"dataGaLocation":26},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":65,"description":66,"link":67},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":68,"config":69},"En savoir plus",{"href":70,"dataGaName":71,"dataGaLocation":26},"/fr-fr/why-gitlab/","why gitlab",{"text":73,"left":15,"config":74,"menu":76},"Produit",{"dataNavLevelOne":75},"solutions",{"type":77,"link":78,"columns":82,"feature":153},"lists",{"text":79,"config":80},"Voir toutes les solutions",{"href":81,"dataGaName":75,"dataGaLocation":26},"/fr-fr/solutions/",[83,108,131],{"title":84,"description":85,"link":86,"items":91},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":87},{"icon":88,"href":89,"dataGaName":90,"dataGaLocation":26},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[92,96,99,104],{"text":93,"config":94},"CI/CD",{"href":95,"dataGaLocation":26,"dataGaName":93},"/fr-fr/solutions/continuous-integration/",{"text":57,"config":97},{"href":62,"dataGaLocation":26,"dataGaName":98},"gitlab duo agent platform - product menu",{"text":100,"config":101},"Gestion du code source",{"href":102,"dataGaLocation":26,"dataGaName":103},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":105,"config":106},"Livraison de logiciels automatisée",{"href":89,"dataGaLocation":26,"dataGaName":107},"Automated software delivery",{"title":109,"description":110,"link":111,"items":116},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":112},{"href":113,"dataGaName":114,"dataGaLocation":26,"icon":115},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[117,121,126],{"text":118,"config":119},"Tests de sécurité des applications",{"href":113,"dataGaName":120,"dataGaLocation":26},"Application security testing",{"text":122,"config":123},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":124,"dataGaLocation":26,"dataGaName":125},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":127,"config":128},"Conformité logicielle",{"href":129,"dataGaName":130,"dataGaLocation":26},"/fr-fr/solutions/software-compliance/","software compliance",{"title":132,"link":133,"items":138},"Mesures",{"config":134},{"icon":135,"href":136,"dataGaName":137,"dataGaLocation":26},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[139,143,148],{"text":140,"config":141},"Visibilité et mesures",{"href":136,"dataGaLocation":26,"dataGaName":142},"Visibility and Measurement",{"text":144,"config":145},"Gestion de la chaîne de valeur",{"href":146,"dataGaLocation":26,"dataGaName":147},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":149,"config":150},"Analyses et informations",{"href":151,"dataGaLocation":26,"dataGaName":152},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":154,"type":77,"items":155},"GitLab",[156,162,168],{"text":157,"config":158},"Entreprises",{"icon":159,"href":160,"dataGaLocation":26,"dataGaName":161},"Building","/fr-fr/enterprise/","enterprise",{"text":163,"config":164},"Pour les PME",{"icon":165,"href":166,"dataGaLocation":26,"dataGaName":167},"Work","/fr-fr/small-business/","small business",{"text":169,"config":170},"Pour le secteur public",{"icon":171,"href":172,"dataGaLocation":26,"dataGaName":173},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":175,"config":176},"Tarifs",{"href":177,"dataGaName":178,"dataGaLocation":26,"dataNavLevelOne":178},"/fr-fr/pricing/","pricing",{"text":180,"config":181,"menu":183},"Ressources",{"dataNavLevelOne":182},"resources",{"type":77,"link":184,"columns":188,"feature":282},{"text":185,"config":186},"Afficher toutes les ressources",{"href":187,"dataGaName":182,"dataGaLocation":26},"/fr-fr/resources/",[189,222,249],{"title":190,"items":191},"Premiers pas",[192,197,202,207,212,217],{"text":193,"config":194},"Installation",{"href":195,"dataGaName":196,"dataGaLocation":26},"/fr-fr/install/","install",{"text":198,"config":199},"Guides de démarrage",{"href":200,"dataGaName":201,"dataGaLocation":26},"/fr-fr/get-started/","quick setup checklists",{"text":203,"config":204},"Apprentissage",{"href":205,"dataGaLocation":26,"dataGaName":206},"https://university.gitlab.com/","learn",{"text":208,"config":209},"Documentation",{"href":210,"dataGaName":211,"dataGaLocation":26},"https://docs.gitlab.com/","product documentation",{"text":213,"config":214},"Vidéos sur les bonnes pratiques",{"href":215,"dataGaName":216,"dataGaLocation":26},"/fr-fr/getting-started-videos/","best practice videos",{"text":218,"config":219},"Intégrations",{"href":220,"dataGaName":221,"dataGaLocation":26},"/fr-fr/integrations/","integrations",{"title":223,"items":224},"Découvrir",[225,230,235,240,244],{"text":226,"config":227},"Témoignages clients",{"href":228,"dataGaName":229,"dataGaLocation":26},"/fr-fr/customers/","customer success stories",{"text":231,"config":232},"Blog",{"href":233,"dataGaName":234,"dataGaLocation":26},"/fr-fr/blog/","blog",{"text":236,"config":237},"Demo Hub",{"href":238,"dataGaName":239,"dataGaLocation":26},"/fr-fr/demo-hub/","demo hub",{"text":241,"config":242},"The Source",{"href":243,"dataGaName":234,"dataGaLocation":26},"/fr-fr/the-source/",{"text":245,"config":246},"Travail à distance",{"href":247,"dataGaName":248,"dataGaLocation":26},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":250,"items":251},"Connecter",[252,257,262,267,272,277],{"text":253,"config":254},"Services GitLab",{"href":255,"dataGaName":256,"dataGaLocation":26},"/fr-fr/services/","services",{"text":258,"config":259},"Contribuer",{"href":260,"dataGaName":261,"dataGaLocation":26},"https://contributors.gitlab.com","contribute",{"text":263,"config":264},"Communauté",{"href":265,"dataGaName":266,"dataGaLocation":26},"/community/","community",{"text":268,"config":269},"Forum",{"href":270,"dataGaName":271,"dataGaLocation":26},"https://forum.gitlab.com/","forum",{"text":273,"config":274},"Événements",{"href":275,"dataGaName":276,"dataGaLocation":26},"/events/","events",{"text":278,"config":279},"Partenaires",{"href":280,"dataGaName":281,"dataGaLocation":26},"/fr-fr/partners/","partners",{"config":283,"title":286,"text":287,"link":288},{"background":284,"textColor":285},"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":289,"config":290},"Lire les articles les plus récents",{"href":291,"dataGaName":292,"dataGaLocation":26},"/fr-fr/whats-new/","whats new",{"text":294,"config":295,"menu":297},"Société",{"dataNavLevelOne":296},"company",{"type":77,"columns":298},[299],{"items":300},[301,306,312,314,319,324,329,334,339,344],{"text":302,"config":303},"À propos",{"href":304,"dataGaName":305,"dataGaLocation":26},"/fr-fr/company/","about",{"text":307,"config":308,"footerGa":311},"Carrières",{"href":309,"dataGaName":310,"dataGaLocation":26},"/jobs/","jobs",{"dataGaName":310},{"text":273,"config":313},{"href":275,"dataGaName":276,"dataGaLocation":26},{"text":315,"config":316},"Leadership",{"href":317,"dataGaName":318,"dataGaLocation":26},"/company/team/e-group/","leadership",{"text":320,"config":321},"Manuel",{"href":322,"dataGaName":323,"dataGaLocation":26},"https://handbook.gitlab.com/","handbook",{"text":325,"config":326},"Relations avec les investisseurs",{"href":327,"dataGaName":328,"dataGaLocation":26},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":330,"config":331},"Trust Center",{"href":332,"dataGaName":333,"dataGaLocation":26},"/fr-fr/security/","trust center",{"text":335,"config":336},"Centre pour la transparence de l'IA",{"href":337,"dataGaName":338,"dataGaLocation":26},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":340,"config":341},"Newsletter",{"href":342,"dataGaName":343,"dataGaLocation":26},"/company/contact/#contact-forms","newsletter",{"text":345,"config":346},"Presse",{"href":347,"dataGaName":348,"dataGaLocation":26},"/press/","press",{"text":350,"config":351,"menu":352},"Nous contacter",{"dataNavLevelOne":296},{"type":77,"columns":353},[354],{"items":355},[356,361,366],{"text":357,"config":358},"Contacter l'équipe commerciale",{"href":359,"dataGaName":360,"dataGaLocation":26},"/fr-fr/sales/","talk to sales",{"text":362,"config":363},"Assistance GitLab",{"href":364,"dataGaName":365,"dataGaLocation":26},"https://support.gitlab.com/hc/en-us","support portal",{"text":367,"config":368},"Portail clients GitLab",{"href":369,"dataGaName":370,"dataGaLocation":26},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":372,"login":373,"suggestions":380},"Fermer",{"text":374,"link":375},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":376,"config":377},"GitLab.com",{"href":40,"dataGaName":378,"dataGaLocation":379},"search login","search",{"text":381,"default":382},"Suggestions",[383,386,391,393,398,403],{"text":57,"config":384},{"href":62,"dataGaName":385,"dataGaLocation":379},"GitLab Duo Agent Platform",{"text":387,"config":388},"Suggestions de code (IA)",{"href":389,"dataGaName":390,"dataGaLocation":379},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":93,"config":392},{"href":95,"dataGaName":93,"dataGaLocation":379},{"text":394,"config":395},"GitLab sur AWS",{"href":396,"dataGaName":397,"dataGaLocation":379},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":399,"config":400},"GitLab sur Google Cloud",{"href":401,"dataGaName":402,"dataGaLocation":379},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":404,"config":405},"Pourquoi utiliser GitLab ?",{"href":70,"dataGaName":406,"dataGaLocation":379},"Why GitLab?",{"freeTrial":408,"mobileIcon":413,"desktopIcon":418,"secondaryButton":421},{"text":409,"config":410},"Commencer votre essai gratuit",{"href":411,"dataGaName":31,"dataGaLocation":412},"https://gitlab.com/-/trials/new/","nav",{"altText":414,"config":415},"Icône GitLab",{"src":416,"dataGaName":417,"dataGaLocation":412},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":414,"config":419},{"src":420,"dataGaName":417,"dataGaLocation":412},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":422,"config":423},"Commencer",{"href":424,"dataGaName":425,"dataGaLocation":412},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":427,"mobileIcon":431,"desktopIcon":433},{"text":428,"config":429},"En savoir plus sur GitLab Duo",{"href":62,"dataGaName":430,"dataGaLocation":412},"gitlab duo",{"altText":414,"config":432},{"src":416,"dataGaName":417,"dataGaLocation":412},{"altText":414,"config":434},{"src":420,"dataGaName":417,"dataGaLocation":412},{"button":436,"mobileIcon":441,"desktopIcon":443},{"text":437,"config":438},"/switch",{"href":439,"dataGaName":440,"dataGaLocation":412},"#contact","switch",{"altText":414,"config":442},{"src":416,"dataGaName":417,"dataGaLocation":412},{"altText":414,"config":444},{"src":445,"dataGaName":417,"dataGaLocation":412},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":447,"mobileIcon":452,"desktopIcon":454},{"text":448,"config":449},"Retour aux tarifs",{"href":177,"dataGaName":450,"dataGaLocation":412,"icon":451},"back to pricing","GoBack",{"altText":414,"config":453},{"src":416,"dataGaName":417,"dataGaLocation":412},{"altText":414,"config":455},{"src":420,"dataGaName":417,"dataGaLocation":412},{"title":457,"button":458,"config":462},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":68,"config":459},{"href":460,"dataGaName":461,"dataGaLocation":26},"/fr-fr/gitlab-orbit/","orbit",{"layout":463,"disabled":10},"release",{"data":465},{"text":466,"source":467,"edit":473,"contribute":478,"config":482,"items":487,"minimal":695},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":468,"config":469},"Afficher le code source de la page",{"href":470,"dataGaName":471,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":474,"config":475},"Modifier cette page",{"href":476,"dataGaName":477,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":258,"config":479},{"href":480,"dataGaName":481,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":483,"facebook":484,"youtube":485,"linkedin":486},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[488,534,587,630,662],{"title":175,"links":489,"subMenu":504},[490,494,499],{"text":491,"config":492},"Voir les forfaits",{"href":177,"dataGaName":493,"dataGaLocation":472},"view plans",{"text":495,"config":496},"GitLab Premium",{"href":497,"dataGaName":498,"dataGaLocation":472},"/fr-fr/pricing/premium/","why premium",{"text":500,"config":501},"GitLab Ultimate",{"href":502,"dataGaName":503,"dataGaLocation":472},"/fr-fr/pricing/ultimate/","why ultimate",[505],{"title":350,"links":506},[507,509,511,514,519,524,529],{"text":357,"config":508},{"href":359,"dataGaName":36,"dataGaLocation":472},{"text":362,"config":510},{"href":364,"dataGaName":365,"dataGaLocation":472},{"text":512,"config":513},"Portail clients",{"href":369,"dataGaName":370,"dataGaLocation":472},{"text":515,"config":516},"Statut",{"href":517,"dataGaName":518,"dataGaLocation":472},"https://status.gitlab.com/","status",{"text":520,"config":521},"Conditions d'utilisation",{"href":522,"dataGaName":523,"dataGaLocation":472},"/terms/","terms of use",{"text":525,"config":526},"Politique de confidentialité",{"href":527,"dataGaName":528,"dataGaLocation":472},"/fr-fr/privacy/","privacy statement",{"text":530,"config":531},"Gestion des cookies",{"dataGaName":532,"dataGaLocation":472,"id":533,"isOneTrustButton":15},"cookie preferences","ot-sdk-btn",{"title":73,"links":535,"subMenu":544},[536,540],{"text":537,"config":538},"Plateforme DevSecOps",{"href":55,"dataGaName":539,"dataGaLocation":472},"devsecops platform",{"text":541,"config":542},"Développement assisté par l'IA",{"href":62,"dataGaName":543,"dataGaLocation":472},"ai-assisted development",[545],{"title":546,"links":547},"Thèmes",[548,552,557,562,567,572,577,582],{"text":93,"config":549},{"href":550,"dataGaName":551,"dataGaLocation":472},"/fr-fr/topics/ci-cd/","cicd",{"text":553,"config":554},"GitOps",{"href":555,"dataGaName":556,"dataGaLocation":472},"/fr-fr/topics/gitops/","gitops",{"text":558,"config":559},"DevOps",{"href":560,"dataGaName":561,"dataGaLocation":472},"/fr-fr/topics/devops/","devops",{"text":563,"config":564},"Contrôle de version",{"href":565,"dataGaName":566,"dataGaLocation":472},"/fr-fr/topics/version-control/","version control",{"text":568,"config":569},"DevSecOps",{"href":570,"dataGaName":571,"dataGaLocation":472},"/fr-fr/topics/devsecops/","devsecops",{"text":573,"config":574},"Cloud-native",{"href":575,"dataGaName":576,"dataGaLocation":472},"/fr-fr/topics/cloud-native/","cloud native",{"text":578,"config":579},"IA pour la programmation",{"href":580,"dataGaName":581,"dataGaLocation":472},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":583,"config":584},"IA agentique",{"href":585,"dataGaName":586,"dataGaLocation":472},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":588,"links":589},"Solutions",[590,593,595,600,603,606,609,612,614,617,620,625],{"text":118,"config":591},{"href":113,"dataGaName":592,"dataGaLocation":472},"Application Security Testing",{"text":105,"config":594},{"href":89,"dataGaName":90,"dataGaLocation":472},{"text":596,"config":597},"Développement Agile",{"href":598,"dataGaName":599,"dataGaLocation":472},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":100,"config":601},{"href":102,"dataGaName":602,"dataGaLocation":472},"source code management",{"text":93,"config":604},{"href":95,"dataGaName":605,"dataGaLocation":472},"continuous integration & delivery",{"text":144,"config":607},{"href":146,"dataGaName":608,"dataGaLocation":472},"value stream management",{"text":553,"config":610},{"href":611,"dataGaName":556,"dataGaLocation":472},"/fr-fr/solutions/gitops/",{"text":157,"config":613},{"href":160,"dataGaName":161,"dataGaLocation":472},{"text":615,"config":616},"PME",{"href":166,"dataGaName":167,"dataGaLocation":472},{"text":618,"config":619},"Secteur public",{"href":172,"dataGaName":173,"dataGaLocation":472},{"text":621,"config":622},"Éducation",{"href":623,"dataGaName":624,"dataGaLocation":472},"/fr-fr/solutions/education/","education",{"text":626,"config":627},"Services financiers",{"href":628,"dataGaName":629,"dataGaLocation":472},"/fr-fr/solutions/finance/","financial services",{"title":180,"links":631},[632,634,636,638,641,643,646,648,650,652,654,656,658,660],{"text":193,"config":633},{"href":195,"dataGaName":196,"dataGaLocation":472},{"text":198,"config":635},{"href":200,"dataGaName":201,"dataGaLocation":472},{"text":203,"config":637},{"href":205,"dataGaName":206,"dataGaLocation":472},{"text":208,"config":639},{"href":210,"dataGaName":640,"dataGaLocation":472},"docs",{"text":231,"config":642},{"href":233,"dataGaName":234,"dataGaLocation":472},{"text":644,"config":645},"Nouveautés",{"href":291,"dataGaName":292,"dataGaLocation":472},{"text":226,"config":647},{"href":228,"dataGaName":229,"dataGaLocation":472},{"text":245,"config":649},{"href":247,"dataGaName":248,"dataGaLocation":472},{"text":253,"config":651},{"href":255,"dataGaName":256,"dataGaLocation":472},{"text":258,"config":653},{"href":260,"dataGaName":261,"dataGaLocation":472},{"text":263,"config":655},{"href":265,"dataGaName":266,"dataGaLocation":472},{"text":268,"config":657},{"href":270,"dataGaName":271,"dataGaLocation":472},{"text":273,"config":659},{"href":275,"dataGaName":276,"dataGaLocation":472},{"text":278,"config":661},{"href":280,"dataGaName":281,"dataGaLocation":472},{"title":294,"links":663},[664,666,668,670,672,674,679,684,686,688,690],{"text":302,"config":665},{"href":304,"dataGaName":296,"dataGaLocation":472},{"text":307,"config":667},{"href":309,"dataGaName":310,"dataGaLocation":472},{"text":315,"config":669},{"href":317,"dataGaName":318,"dataGaLocation":472},{"text":320,"config":671},{"href":322,"dataGaName":323,"dataGaLocation":472},{"text":325,"config":673},{"href":327,"dataGaName":328,"dataGaLocation":472},{"text":675,"config":676},"Développement durable",{"href":677,"dataGaName":678,"dataGaLocation":472},"/sustainability/","Sustainability",{"text":680,"config":681},"Diversité, inclusion et appartenance (DIB)",{"href":682,"dataGaName":683,"dataGaLocation":472},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":330,"config":685},{"href":332,"dataGaName":333,"dataGaLocation":472},{"text":340,"config":687},{"href":342,"dataGaName":343,"dataGaLocation":472},{"text":345,"config":689},{"href":347,"dataGaName":348,"dataGaLocation":472},{"text":691,"config":692},"Déclaration de transparence sur l'esclavage moderne",{"href":693,"dataGaName":694,"dataGaLocation":472},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":696},[697,699,701],{"text":520,"config":698},{"href":522,"dataGaName":523,"dataGaLocation":472},{"text":530,"config":700},{"dataGaName":532,"dataGaLocation":472,"id":533,"isOneTrustButton":15},{"text":525,"config":702},{"href":527,"dataGaName":528,"dataGaLocation":472},26,{"id":705,"title":706,"authors":707,"body":709,"category":9,"date":1439,"description":1440,"extension":1441,"externalUrl":6,"faq":6,"featured":10,"heroImage":1442,"meta":1443,"navigation":15,"path":1444,"seo":1445,"slug":1447,"stem":1448,"tags":1449,"template":1451,"updatedDate":6,"__hash__":1452},"blogPosts/fr-fr/blog/whats-new-in-git-2-55-0.md","Nouveautés de Git 2.55.0",[708],"Toon Claes",{"type":710,"value":711,"toc":1427},"minimark",[712,730,739,757,766,832,838,861,864,884,888,912,927,952,977,984,999,1002,1023,1026,1034,1041,1059,1066,1088,1095,1118,1126,1129,1140,1158,1161,1167,1180,1195,1199,1208,1215,1222,1225,1233,1276,1294,1298,1320,1345,1348,1356,1374,1381,1389,1405,1409,1423],[713,714,715,716,723,724,729],"p",{},"Le projet ",[717,718,722],"a",{"href":719,"rel":720,"title":721},"https://about.gitlab.com/fr-fr/blog/what-is-git/",[],"Qu'est-ce que Git ?","Git"," a récemment publié ",[717,725,728],{"href":726,"rel":727},"https://lore.kernel.org/git/xmqqv7b1w9vr.fsf@gitster.g/T/#u",[],"Git 2.55.0",". Passons en revue quelques-unes des nouveautés marquantes de cette release, qui comprend des contributions de l'équipe Git chez GitLab.",[731,732,734,735],"h2",{"id":733},"git-history1-nouvelle-commande-fixup","git-history(1) : nouvelle commande ",[736,737,738],"code",{},"fixup",[713,740,741,742,747,748,753,754,756],{},"Dans ",[717,743,746],{"href":744,"rel":745},"https://about.gitlab.com/fr-fr/blog/whats-new-in-git-2-54-0/#easier-editing-of-your-commit-history",[],"les nouveautés marquantes de Git 2.54.0",", nous avons présenté l'introduction de ",[717,749,752],{"href":750,"rel":751},"https://git-scm.com/docs/git-history",[],"git-history(1)",". Dans la release 2.55.0, une nouvelle sous-commande a été ajoutée à cet outil : ",[736,755,738],{},".",[713,758,759,760,765],{},"Imaginez que vous avez apporté des modifications et que vous souhaitez les intégrer à un commit existant. L'approche la plus courante consiste à créer un commit fixup, puis à le regrouper automatiquement (« autosquash ») avec ",[717,761,764],{"href":762,"rel":763},"https://git-scm.com/docs/git-rebase",[],"git-rebase(1)"," :",[767,768,773],"pre",{"className":769,"code":770,"language":771,"meta":772,"style":772},"language-shell shiki shiki-themes github-light","git commit --fixup=\u003Ccommit-id>\ngit rebase -i --autosquash \u003Ccommit-id>^\n","shell","",[736,774,775,802],{"__ignoreMap":772},[776,777,780,784,788,792,796,799],"span",{"class":778,"line":779},"line",1,[776,781,783],{"class":782},"s7eDp","git",[776,785,787],{"class":786},"sYBdl"," commit",[776,789,791],{"class":790},"sYu0t"," --fixup=",[776,793,795],{"class":794},"sD7c4","\u003C",[776,797,798],{"class":790},"commit-id",[776,800,801],{"class":794},">\n",[776,803,805,807,810,813,816,819,822,826,829],{"class":778,"line":804},2,[776,806,783],{"class":782},[776,808,809],{"class":786}," rebase",[776,811,812],{"class":790}," -i",[776,814,815],{"class":790}," --autosquash",[776,817,818],{"class":794}," \u003C",[776,820,821],{"class":786},"commit-i",[776,823,825],{"class":824},"sgsFI","d",[776,827,828],{"class":794},">",[776,830,831],{"class":786},"^\n",[713,833,834,835,837],{},"Effectuer cette opération en deux étapes est fastidieux, d'autant plus que cela nécessite un rebasage interactif. À la place, utilisez la commande ",[736,836,738],{}," de git-history(1) :",[767,839,841],{"className":769,"code":840,"language":771,"meta":772,"style":772},"git history fixup \u003Ccommit-id>\n",[736,842,843],{"__ignoreMap":772},[776,844,845,847,850,853,855,857,859],{"class":778,"line":779},[776,846,783],{"class":782},[776,848,849],{"class":786}," history",[776,851,852],{"class":786}," fixup",[776,854,818],{"class":794},[776,856,821],{"class":786},[776,858,825],{"class":824},[776,860,801],{"class":794},[713,862,863],{},"Celle-ci intègre les modifications indexées au commit indiqué. Avantage supplémentaire : étant donné que vous utilisez git-history(1), toutes les autres branches locales qui contiennent le commit corrigé sont également mises à jour. Ainsi, lorsque vous travaillez avec des branches empilées, corriger un commit de la pile rebase automatiquement toutes les branches associées.",[713,865,866,867,872,873,878,879,756],{},"Cette ",[717,868,871],{"href":869,"rel":870},"https://gitlab.com/git-scm/git/-/commit/ca7d7d642406e608214ee4529a75a6ad2310de35",[],"fonctionnalité"," a été ",[717,874,877],{"href":875,"rel":876},"https://lore.kernel.org/git/20260427-b4-pks-history-fixup-v3-0-cb908f06264b@pks.im/",[],"implémentée"," par ",[717,880,883],{"href":881,"rel":882},"https://gitlab.com/pks-gitlab",[],"Patrick Steinhardt",[731,885,887],{"id":886},"daemon-fsmonitor-pour-linux","Daemon fsmonitor pour Linux",[713,889,890,891,896,897,872,900,905,906,911],{},"Lorsque vous travaillez avec de grands monorepos, ",[717,892,895],{"href":893,"rel":894},"https://git-scm.com/docs/git-status",[],"git-status(1)"," est parfois lent à déterminer ce qui a changé dans l'arborescence de travail locale, car Git doit en parcourir l'intégralité pour repérer les fichiers modifiés. Pour accélérer ce processus, le paramètre ",[736,898,899],{},"core.fsmonitor",[717,901,904],{"href":902,"rel":903},"https://gitlab.com/git-scm/git/-/commit/e05336bddacb90cf243aacc0f7b7f34f900453d7",[],"ajouté"," en janvier 2018 dans Git 2.16. À l'époque, vous deviez fournir votre propre outil (comme ",[717,907,910],{"href":908,"rel":909},"https://facebook.github.io/watchman/",[],"Watchman","). Une fois configuré, cet outil s'exécute en arrière-plan et surveille les modifications du système de fichiers. Il informe Git qu'un fichier est concerné ; Git vérifie alors si le fichier a été modifié et met à jour le statut mis en cache. Ensuite, chaque fois que l'utilisateur appelle git-status(1), la commande peut simplement renvoyer le statut mis en cache.",[713,913,914,915,872,917,922,923,926],{},"En avril 2022, le paramètre ",[736,916,899],{},[717,918,921],{"href":919,"rel":920},"https://gitlab.com/git-scm/git/-/commit/1e0ea5c4316d2241dd76ef430a2779db9a097dfb",[],"modifié"," pour accepter une valeur booléenne. Lorsque ce paramètre est défini sur ",[736,924,925],{},"true",", un daemon intégré à Git est utilisé et plus aucun outil tiers n'est nécessaire. Mais ce moniteur de système de fichiers n'était implémenté que pour Windows et macOS ; la prise en charge de GNU/Linux n'existait pas encore.",[713,928,929,930,935,936,941,942,947,948,951],{},"C'est désormais chose faite avec Git 2.55, qui prend en charge Linux. Pour y parvenir, nous avons décidé d'utiliser ",[717,931,934],{"href":932,"rel":933},"https://man7.org/linux/man-pages/man7/inotify.7.html",[],"inotify(7)"," plutôt que ",[717,937,940],{"href":938,"rel":939},"https://www.man7.org/linux/man-pages/man7/fanotify.7.html",[],"fanotify(7)",", car fanotify(7) nécessite des privilèges élevés. Il y a toutefois un petit ",[717,943,946],{"href":944,"rel":945},"https://git-scm.com/docs/git-fsmonitor--daemon#_linux_caveats",[],"bémol"," : fsmonitor doit surveiller chaque répertoire du dépôt. Dans un grand dépôt, vous pourriez atteindre la limite de surveillance inotify (",[736,949,950],{},"fs.inotify.max_user_watches","), que vous devrez peut-être augmenter.",[713,953,954,955,960,961,878,966,971,972,756],{},"Ces ",[717,956,959],{"href":957,"rel":958},"https://gitlab.com/git-scm/git/-/commit/4d11b9c21863c1a860fdf61a9066f0d94c0d692a",[],"modifications"," ont été ",[717,962,965],{"href":963,"rel":964},"https://lore.kernel.org/git/pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com/",[],"soumises",[717,967,970],{"href":968,"rel":969},"https://paultarjan.com/",[],"Paul Tarjan"," à partir des travaux d'Eric DeCosta et de ",[717,973,976],{"href":974,"rel":975},"https://github.com/maryis",[],"Marziyeh Esipreh",[731,978,980,983],{"id":979},"git-push-vers-un-groupe-de-dépôts-distants",[736,981,982],{},"git push"," vers un groupe de dépôts distants",[713,985,986,987,992,993,998],{},"Il y a déjà un certain temps, ",[717,988,991],{"href":989,"rel":990},"https://git-scm.com/docs/git-fetch",[],"git-fetch(1)"," a appris à gérer la récupération depuis un ",[717,994,997],{"href":995,"rel":996},"https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt-group",[],"groupe"," de dépôts distants.",[713,1000,1001],{},"La commande suivante configure un groupe de dépôts distants :",[767,1003,1005],{"className":769,"code":1004,"language":771,"meta":772,"style":772},"git config set remotes.forks \"origin upstream\"\n",[736,1006,1007],{"__ignoreMap":772},[776,1008,1009,1011,1014,1017,1020],{"class":778,"line":779},[776,1010,783],{"class":782},[776,1012,1013],{"class":786}," config",[776,1015,1016],{"class":786}," set",[776,1018,1019],{"class":786}," remotes.forks",[776,1021,1022],{"class":786}," \"origin upstream\"\n",[713,1024,1025],{},"Une fois cette configuration en place, vous pouvez utiliser git-fetch(1) sur ce groupe nommé « forks » ; les modifications de tous les dépôts distants de ce groupe sont alors récupérées. Cette commande peut s'avérer utile lorsque vous souhaitez obtenir les mises à jour d'un ensemble de dépôts distants en une seule fois.",[713,1027,1028,1033],{},[717,1029,1032],{"href":1030,"rel":1031},"https://git-scm.com/docs/git-push",[],"git-push(1)",", en revanche, ne pouvait pas utiliser les groupes de dépôts distants.",[713,1035,1036,1037,1040],{},"Git 2.55 comble cette lacune : git-push(1) accepte désormais aussi un groupe de dépôts distants. Voici un exemple de push de la branche ",[736,1038,1039],{},"main"," vers le groupe mentionné ci-dessus :",[767,1042,1044],{"className":769,"code":1043,"language":771,"meta":772,"style":772},"git push forks main\n",[736,1045,1046],{"__ignoreMap":772},[776,1047,1048,1050,1053,1056],{"class":778,"line":779},[776,1049,783],{"class":782},[776,1051,1052],{"class":786}," push",[776,1054,1055],{"class":786}," forks",[776,1057,1058],{"class":786}," main\n",[713,1060,1061,1062,1065],{},"Comme avec git-fetch(1), cette commande envoie les références spécifiées vers chaque dépôt distant du groupe. Chaque dépôt distant fait l'objet d'un push indépendant et respecte sa propre correspondance ",[736,1063,1064],{},"remote.\u003Cname>.push"," ainsi que ses paramètres de miroir.",[713,1067,866,1068,872,1072,878,1077,1082,1083,756],{},[717,1069,871],{"href":1070,"rel":1071},"https://gitlab.com/git-scm/git/-/commit/2c677d20b684cdcae669fe508d4cd60fea8cb320",[],[717,1073,1076],{"href":1074,"rel":1075},"https://lore.kernel.org/git/20260503153402.1333220-1-usmanakinyemi202@gmail.com/",[],"soumise",[717,1078,1081],{"href":1079,"rel":1080},"https://github.com/Unique-Usman",[],"Usman Akinyemi",", sur la base d'une suggestion de ",[717,1084,1087],{"href":1085,"rel":1086},"https://lore.kernel.org/git/xmqqiki0ivgy.fsf@gitster.g/",[],"Junio C Hamano",[731,1089,1091,1092],{"id":1090},"limiter-la-largeur-de-git-log-graph","Limiter la largeur de ",[736,1093,1094],{},"git log --graph",[713,1096,1097,1098,1105,1106,1111,1112,1117],{},"L'option ",[717,1099,1102],{"href":1100,"rel":1101},"https://git-scm.com/docs/git-log#Documentation/git-log.txt---graph",[],[736,1103,1104],{},"--graph"," de ",[717,1107,1110],{"href":1108,"rel":1109},"https://git-scm.com/docs/git-log",[],"git-log(1)"," dessine une représentation ASCII de l'historique des commits. Dans un dépôt comptant de nombreux contributeurs actifs, ce graphe peut devenir très large. Par exemple, sur le dépôt ",[717,1113,1116],{"href":1114,"rel":1115},"https://gitlab.com/git-scm/git/",[],"git.git",", ce graphe atteint neuf caractères de large après seulement 30 commits :",[767,1119,1124],{"className":1120,"code":1122,"language":1123,"meta":772},[1121],"language-text","* 26d8d94e94 A few more topics before -rc2\n*   02bb39c5cb Merge branch 'js/objects-larger-than-4gb-on-windows-more'\n|\\\n| * c6a4629e32 odb: use size_t for object_info.sizep and the size APIs\n| * 7a3a78cc76 packfile,delta: drop the `cast_size_t_to_ulong()` wrappers\n| * 188bac14f7 pack-objects: use size_t for in-core object sizes\n| * 2d83cc3f84 packfile: widen unpack_entry()'s size out-parameter to size_t\n| * 1d43315b31 pack-objects(check_pack_inflate()): use size_t instead of unsigned long\n| * 33afe87338 patch-delta: use size_t for sizes\n| * 8ea69373a4 compat/msvc: use _chsize_s for ftruncate\n* |   8cf57cbec4 Merge branch 'kw/gitattributes-typofix'\n|\\ \\\n| * | 0bf506efd4 gitattributes: fix eol attribute for Perl scripts\n* | |   8d96f09e92 Merge branch 'js/objects-larger-than-4gb-on-windows'\n|\\ \\ \\\n| * | | ab3810eb6f zlib: properly clamp to uLong\n* | | | 95e20213fa Hopefully final batch before -rc2\n* | | |   8632b5c49d Merge branch 'en/commit-graph-timestamp-fix'\n|\\ \\ \\ \\\n| * | | | fbcc5408fc commit-graph: use timestamp_t for max parent generation accumulator\n* | | | |   619931f561 Merge branch 'dl/posix-unused-warning-clang'\n|\\ \\ \\ \\ \\\n| * | | | | cf48887610 compat/posix.h: simplify GIT_GNUC_PREREQ() comparison\n| * | | | | ffd45926dc compat/posix.h: clean up GIT_GNUC_PREREQ() and UNUSED\n| * | | | | 689dc92e50 compat/posix.h: enable UNUSED warning messages for Clang\n* | | | | |   621962aa7a Merge branch 'td/ls-files-pathspec-prefilter'\n|\\ \\ \\ \\ \\ \\\n| * | | | | | 3f5203eeb4 ls-files: filter pathspec before lstat\n| | |_|_|_|/\n| |/| | | |\n* | | | | |   0c706d5092 Merge branch 'ta/doc-config-adoc-fixes'\n|\\ \\ \\ \\ \\ \\\n| * | | | | | 4fa2c6e045 doc: git-config: escape erroneous highlight markup\n| * | | | | | 042221cccb doc: config/sideband: fix description list delimiter\n| * | | | | | 3eb61fda62 doc: config: terminate runaway lists\n* | | | | | |   49cb068fb2 Merge branch 'jc/t1400-fifo-cleanup'\n|\\ \\ \\ \\ \\ \\ \\\n| * | | | | | | e8f12e0e95 t1400: have fifo test clean after itself\n* | | | | | | |   b4970f8448 Merge branch 'td/describe-tag-iteration'\n|\\ \\ \\ \\ \\ \\ \\ \\\n| * | | | | | | | 55088ac8a4 describe: limit default ref iteration to tags\n","text",[736,1125,1122],{"__ignoreMap":772},[713,1127,1128],{},"Chaque voie de l’historique se prolonge vers le bas jusqu'au commit à partir duquel la branche a été créée. Les messages de commit sont ainsi relégués vers la droite, ce qui complique la lecture. Le problème devient particulièrement ingérable lorsque la largeur de l'écran du terminal est atteinte.",[713,1130,1131,1132,1135,1136,1139],{},"Git 2.55 ajoute une nouvelle option (",[736,1133,1134],{},"--graph-lane-limit=\u003Cn>",") pour limiter le nombre de voies dessinées. Toutes les voies au-delà de la limite sont remplacées par une marque de troncature ",[736,1137,1138],{},"~"," afin d'indiquer clairement que le graphe a été tronqué :",[767,1141,1143],{"className":769,"code":1142,"language":771,"meta":772,"style":772},"git log --graph --graph-lane-limit=5\n",[736,1144,1145],{"__ignoreMap":772},[776,1146,1147,1149,1152,1155],{"class":778,"line":779},[776,1148,783],{"class":782},[776,1150,1151],{"class":786}," log",[776,1153,1154],{"class":790}," --graph",[776,1156,1157],{"class":790}," --graph-lane-limit=5\n",[713,1159,1160],{},"En utilisant cette option pour les 30 mêmes commits que ci-dessus, nous obtenons le résultat suivant :",[767,1162,1165],{"className":1163,"code":1164,"language":1123,"meta":772},[1121],"* 26d8d94e94 A few more topics before -rc2\n*   02bb39c5cb Merge branch 'js/objects-larger-than-4gb-on-windows-more'\n|\\\n| * c6a4629e32 odb: use size_t for object_info.sizep and the size APIs\n| * 7a3a78cc76 packfile,delta: drop the `cast_size_t_to_ulong()` wrappers\n| * 188bac14f7 pack-objects: use size_t for in-core object sizes\n| * 2d83cc3f84 packfile: widen unpack_entry()'s size out-parameter to size_t\n| * 1d43315b31 pack-objects(check_pack_inflate()): use size_t instead of unsigned long\n| * 33afe87338 patch-delta: use size_t for sizes\n| * 8ea69373a4 compat/msvc: use _chsize_s for ftruncate\n* |   8cf57cbec4 Merge branch 'kw/gitattributes-typofix'\n|\\ \\\n| * | 0bf506efd4 gitattributes: fix eol attribute for Perl scripts\n* | |   8d96f09e92 Merge branch 'js/objects-larger-than-4gb-on-windows'\n|\\ \\ \\\n| * | | ab3810eb6f zlib: properly clamp to uLong\n* | | | 95e20213fa Hopefully final batch before -rc2\n* | | |   8632b5c49d Merge branch 'en/commit-graph-timestamp-fix'\n|\\ \\ \\ \\\n| * | | | fbcc5408fc commit-graph: use timestamp_t for max parent generation accumulator\n* | | | |   619931f561 Merge branch 'dl/posix-unused-warning-clang'\n|\\ \\ \\ \\ \\\n| * | | | ~ cf48887610 compat/posix.h: simplify GIT_GNUC_PREREQ() comparison\n| * | | | ~ ffd45926dc compat/posix.h: clean up GIT_GNUC_PREREQ() and UNUSED\n| * | | | ~ 689dc92e50 compat/posix.h: enable UNUSED warning messages for Clang\n* | | | | ~ 621962aa7a Merge branch 'td/ls-files-pathspec-prefilter'\n|\\ \\ \\ \\ \\~\n| * | | | ~ 3f5203eeb4 ls-files: filter pathspec before lstat\n| | |_|_|_~\n| |/| | | ~\n* | | | | ~ 0c706d5092 Merge branch 'ta/doc-config-adoc-fixes'\n|\\ \\ \\ \\ \\~\n| * | | | ~ 4fa2c6e045 doc: git-config: escape erroneous highlight markup\n| * | | | ~ 042221cccb doc: config/sideband: fix description list delimiter\n| * | | | ~ 3eb61fda62 doc: config: terminate runaway lists\n* | | | | ~ 49cb068fb2 Merge branch 'jc/t1400-fifo-cleanup'\n|\\ \\ \\ \\ \\~\n| * | | | ~ e8f12e0e95 t1400: have fifo test clean after itself\n* | | | | ~ b4970f8448 Merge branch 'td/describe-tag-iteration'\n|\\ \\ \\ \\ \\~\n| * | | | ~ 55088ac8a4 describe: limit default ref iteration to tags\n",[736,1166,1164],{"__ignoreMap":772},[713,1168,1169,1170,1172,1173,1176,1177,756],{},"Cette option n'a de sens qu'avec ",[736,1171,1104],{},". La valeur par défaut est ",[736,1174,1175],{},"0",", ce qui signifie qu'il n'y a aucune limite ; les valeurs nulles ou négatives sont traitées de la même manière, tout comme le fait ",[736,1178,1179],{},"--max-parents",[713,1181,866,1182,872,1186,878,1190,756],{},[717,1183,871],{"href":1184,"rel":1185},"https://gitlab.com/git-scm/git/-/commit/7af2503365b4bc683c16e667b88c0796d6d9d2ee",[],[717,1187,1076],{"href":1188,"rel":1189},"https://lore.kernel.org/git/20260328001113.1275291-1-pabloosabaterr@gmail.com/",[],[717,1191,1194],{"href":1192,"rel":1193},"https://pablosabater.dev/",[],"Pablo Sabater",[731,1196,1198],{"id":1197},"évolution-de-rust-dans-le-code-source-de-git","Évolution de Rust dans le code source de Git",[713,1200,1201,1202,1207],{},"En mars 2025, avec la sortie de Git 2.49, le premier code ",[717,1203,1206],{"href":1204,"rel":1205},"https://www.rust-lang.org/",[],"Rust"," a été ajouté au code source de Git. Des liaisons Rust ont été ajoutées pour permettre au code Rust d'appeler libgit. Mais aucune partie de ce code Rust n'était utilisée par les binaires de Git.",[713,1209,1210,1211,1214],{},"En novembre 2025, dans Git 2.52, le premier code de production Rust a été introduit dans Git. Une implémentation Rust du sous-système ",[736,1212,1213],{},"varint"," a alors été ajoutée. Ce code est compilé de manière facultative si le compilateur Rust est disponible ; dans le cas contraire, c'est l'implémentation C qui est utilisée. Il s'agissait d'un ballon d'essai destiné aux distributeurs, afin qu'ils commencent à préparer leurs outils en vue d'une release de Git qui finirait par exiger Rust.",[713,1216,1217,1218,1221],{},"Plus tôt cette année, dans la release 2.54, davantage de code Rust a été ajouté au code source avec l'introduction du type ",[736,1219,1220],{},"ObjectID",". Celui-ci a été ajouté dans le cadre des efforts visant à mettre en œuvre une interopérabilité entre SHA-1 et SHA-256.",[713,1223,1224],{},"Jusqu'à cette release, les deux systèmes de build Make et Meson revenaient gracieusement à l'implémentation C si le compilateur Rust était introuvable. Avec cette release v2.55, le compilateur Rust est requis, sauf si vous le désactivez explicitement dans le système de build.",[713,1226,1227,1228,1232],{},"Veuillez noter que cela n'affecte pas les utilisateurs de Git. Cela concerne uniquement ceux qui ",[1229,1230,1231],"em",{},"effectuent un build"," de Git à partir de son code source. Si vous effectuez un build de Git et que vous ne souhaitez pas utiliser Rust, désactivez-le avec l'une de ces commandes :",[767,1234,1236],{"className":769,"code":1235,"language":771,"meta":772,"style":772},"# Meson\nmeson configure -Drust=disabled\n\n# Makefile\nmake NO_RUST=YesPlease\n",[736,1237,1238,1244,1255,1261,1267],{"__ignoreMap":772},[776,1239,1240],{"class":778,"line":779},[776,1241,1243],{"class":1242},"sAwPA","# Meson\n",[776,1245,1246,1249,1252],{"class":778,"line":804},[776,1247,1248],{"class":782},"meson",[776,1250,1251],{"class":786}," configure",[776,1253,1254],{"class":790}," -Drust=disabled\n",[776,1256,1258],{"class":778,"line":1257},3,[776,1259,1260],{"emptyLinePlaceholder":15},"\n",[776,1262,1264],{"class":778,"line":1263},4,[776,1265,1266],{"class":1242},"# Makefile\n",[776,1268,1270,1273],{"class":778,"line":1269},5,[776,1271,1272],{"class":782},"make",[776,1274,1275],{"class":786}," NO_RUST=YesPlease\n",[713,1277,1278,1279,1284,1285,1284,1288,1293],{},"L'intégration de Rust dans Git est un effort continu (et inachevé) porté par la communauté, réparti sur plusieurs releases. Il est impossible de l'attribuer à une seule personne, mais ",[717,1280,1283],{"href":1281,"rel":1282},"https://mastodon.social/@bk2204",[],"brian m. carlson",", ",[717,1286,883],{"href":881,"rel":1287},[],[717,1289,1292],{"href":1290,"rel":1291},"https://github.com/ezekielnewren",[],"Ezekiel Newren"," et Calvin Wan figurent parmi les contributeurs les plus marquants.",[731,1295,1297],{"id":1296},"git-grep1-et-git-cherry1-plus-rapides-dans-les-clones-partiels","git-grep(1) et git-cherry(1) plus rapides dans les clones partiels",[713,1299,1300,1305,1306,1311,1312,1319],{},[717,1301,1304],{"href":1302,"rel":1303},"https://git-scm.com/docs/git-clone",[],"git-clone(1)"," dispose d'une fonctionnalité de ",[717,1307,1310],{"href":1308,"rel":1309},"https://git-scm.com/docs/partial-clone",[],"clone partiel",". Celle-ci permet à l'utilisateur d'appliquer un filtre aux éléments envoyés depuis le serveur. En pratique, c'est l'option ",[717,1313,1316],{"href":1314,"rel":1315},"https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---filterfilter-spec",[],[736,1317,1318],{},"--filter",". Exemple :",[767,1321,1323],{"className":769,"code":1322,"language":771,"meta":772,"style":772},"git clone --filter=blob:none \u003Cremote>\n",[736,1324,1325],{"__ignoreMap":772},[776,1326,1327,1329,1332,1335,1337,1340,1343],{"class":778,"line":779},[776,1328,783],{"class":782},[776,1330,1331],{"class":786}," clone",[776,1333,1334],{"class":790}," --filter=blob:none",[776,1336,818],{"class":794},[776,1338,1339],{"class":786},"remot",[776,1341,1342],{"class":824},"e",[776,1344,801],{"class":794},[713,1346,1347],{},"Le dépôt est cloné, mais tous les blobs (c'est-à-dire le contenu des fichiers de l'arborescence) sont exclus. Le clonage peut en être considérablement accéléré, mais avec un inconvénient : Git doit télécharger les blobs ultérieurement lorsque d'autres commandes lisant le contenu des fichiers sont utilisées. Et certaines commandes peuvent nécessiter de nombreux blobs manquants.",[713,1349,1350,1355],{},[717,1351,1354],{"href":1352,"rel":1353},"https://git-scm.com/docs/git-grep",[],"git-grep(1)"," est l'une de ces commandes, car elle recherche dans le contenu des fichiers. Pour ce faire, elle doit évidemment disposer de ces fichiers. Imaginez que vous souhaitez rechercher le mot « TODO » 100 commits en arrière dans l'historique :",[767,1357,1359],{"className":769,"code":1358,"language":771,"meta":772,"style":772},"git grep TODO HEAD~100\n",[736,1360,1361],{"__ignoreMap":772},[776,1362,1363,1365,1368,1371],{"class":778,"line":779},[776,1364,783],{"class":782},[776,1366,1367],{"class":786}," grep",[776,1369,1370],{"class":786}," TODO",[776,1372,1373],{"class":786}," HEAD~100\n",[713,1375,1376,1377,1380],{},"Cette commande résout le commit ",[736,1378,1379],{},"HEAD~100"," ainsi que les arborescences qui lui sont associées. Mais ces arborescences peuvent pointer vers des blobs qui ne sont pas encore téléchargés. Auparavant, chaque blob était téléchargé séparément. Git 2.55 propose une amélioration : les téléchargements de blobs sont regroupés en un seul aller-retour de négociation avec le serveur.",[713,1382,1383,1384,756],{},"Ce regroupement est désormais implémenté à la fois pour git-grep(1) et ",[717,1385,1388],{"href":1386,"rel":1387},"https://git-scm.com/docs/git-cherry",[],"git-cherry(1)",[713,1390,866,1391,872,1396,878,1400,756],{},[717,1392,1395],{"href":1393,"rel":1394},"https://gitlab.com/git-scm/git/-/commit/6d2ba7ead7ab074bfd88e194bb75d6b384c44d4e",[],"modification",[717,1397,1076],{"href":1398,"rel":1399},"https://lore.kernel.org/git/pull.2089.v3.git.1778775928.gitgitgadget@gmail.com/",[],[717,1401,1404],{"href":1402,"rel":1403},"https://github.com/newren",[],"Elijah Newren",[731,1406,1408],{"id":1407},"pour-en-savoir-plus","Pour en savoir plus",[713,1410,1411,1412,1416,1417,1422],{},"Cet article n'a mis en évidence que quelques-unes des contributions apportées par GitLab et la communauté Git pour cette dernière release. Vous pouvez en apprendre davantage dans l'",[717,1413,1415],{"href":726,"rel":1414},[],"annonce de release officielle"," du projet Git. Consultez également nos ",[717,1418,1421],{"href":1419,"rel":1420},"https://about.gitlab.com/fr-fr/blog/tags/git/",[],"articles de blog précédents sur les releases de Git"," pour découvrir d'autres contributions des membres de l'équipe GitLab.",[1424,1425,1426],"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 pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}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":772,"searchDepth":804,"depth":804,"links":1428},[1429,1431,1432,1434,1436,1437,1438],{"id":733,"depth":804,"text":1430},"git-history(1) : nouvelle commande fixup",{"id":886,"depth":804,"text":887},{"id":979,"depth":804,"text":1433},"git push vers un groupe de dépôts distants",{"id":1090,"depth":804,"text":1435},"Limiter la largeur de git log --graph",{"id":1197,"depth":804,"text":1198},{"id":1296,"depth":804,"text":1297},{"id":1407,"depth":804,"text":1408},"2026-07-01","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.","md","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1782732487/ztwgrvlolpifo01vj8qc.png",{},"/fr-fr/blog/whats-new-in-git-2-55-0",{"config":1446,"title":706,"description":1440},{"noIndex":10},"whats-new-in-git-2-55-0","fr-fr/blog/whats-new-in-git-2-55-0",[1450,783,266],"open source","BlogPost","ba3QaGGMaTi8N4DJMam6sDhGwJ6V40-5E3aeGUaY754",[1454,1460,1466,1472,1479,1486,1493,1500,1506],{"title":1455,"heroImage":1456,"category":9,"description":1457,"authors":1458,"slug":1459,"externalUrl":6},"Git : 20 ans d'histoire","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097380/Blog/Hero%20Images/Blog/Hero%20Images/git-20-years-opt2_TWNsNk8KH43b3jP0KLD0U_1750097380123.png","Revivez les débuts du projet Git, avec le tout premier commit, découvrez les particularités des premières versions et replongez dans la confusion qu'a provoquée le changement du comportement par défaut de git-push(1).",[883],"journey-through-gits-20-year-history",{"title":1461,"heroImage":1462,"category":9,"description":1463,"authors":1464,"slug":1465,"externalUrl":6},"Git fête ses 20 ans : entretien avec son créateur Linus Torvalds","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662510/Blog/Hero%20Images/git-20-years-opt1.png","Linus Torvalds nous explique les origines de Git, pourquoi il en a confié la maintenance à Junio Hamano et ce qu'il pense de l'ajout de nouveaux langages de programmation à Git.",[883],"celebrating-gits-20th-anniversary-with-creator-linus-torvalds",{"title":1467,"heroImage":1468,"category":9,"description":1469,"authors":1470,"slug":1471,"externalUrl":6},"Nouveautés de Git 2.49.0","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663087/Blog/Hero%20Images/git3-cover.png","Découvrez la dernière version de Git, y compris les performances améliorées avec l'intégration de zlib-ng et la commande git-backfill(1).",[708],"whats-new-in-git-2-49-0",{"title":1473,"heroImage":1474,"category":9,"description":1475,"authors":1476,"slug":1478,"externalUrl":6},"Comment utiliser les images OCI comme source unique de vérité pour vos déploiements continus","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097601/Blog/Hero%20Images/Blog/Hero%20Images/REFERENCE%20-%20Use%20this%20page%20as%20a%20reference%20for%20thumbnail%20sizes_76Tn5jFmEHY5LFj8RdDjNY_1750097600692.png","Découvrez les avantages d'intégrer les images OCI (Open Container Initiative) dans vos workflows GitOps.",[1477],"Daniel Helfand","how-to-use-oci-images-as-the-source-of-truth-for-continuous-delivery",{"title":1480,"heroImage":1481,"category":9,"description":1482,"authors":1483,"slug":1485,"externalUrl":6},"Hackathon : les clés pour une organisation réussie","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663517/Blog/Hero%20Images/hackathon.jpg","Découvrez les tenants et aboutissants d'un hackathon et obtenez des astuces pour le mettre en place avec efficacité. Découvrez notre guide détaillé.",[1484],"GitLab France Team","what-is-a-hackathon",{"title":1487,"heroImage":1488,"category":9,"description":1489,"authors":1490,"slug":1492,"externalUrl":6},"Nouveautés de Git 2.48.0","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663691/Blog/Hero%20Images/AdobeStock_752438815.jpg","Découvrez la dernière version de Git, y compris un nouveau système de compilation ainsi que des optimisations dans le nouveau backend « reftable ».",[1491],"Christian Couder","whats-new-in-git-2-48-0",{"title":1494,"heroImage":1495,"category":9,"description":1496,"authors":1497,"slug":1499,"externalUrl":6},"Comment GitLab facilite la compréhension du contexte pour les traducteurs","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097922/Blog/Hero%20Images/Blog/Hero%20Images/gitlabflatlogomap_gitlabflatlogomap.png_1750097921899.png","Découvrez notre nouvelle fonctionnalité d'amélioration du contexte de traduction et rejoignez notre communauté de traducteurs.",[1498],"Oleksandr Pysaryuk","how-gitlab-empowers-translators-with-more-context",{"title":1501,"heroImage":1502,"category":9,"description":1503,"authors":1504,"slug":1505,"externalUrl":6},"Git en ligne de commande sous Windows avec Git Bash","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665174/Blog/Hero%20Images/git-bash.jpg","Dans cet article, découvrez Git Bash, son fonctionnement, son installation et les principales commandes à connaître.",[1484],"git-bash",{"title":1507,"heroImage":1508,"category":9,"description":1509,"authors":1510,"slug":1512,"externalUrl":6},"Qu'est-ce que Git ? Guide complet sur son rôle et son fonctionnement","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749687231/Blog/Hero%20Images/Git.jpg","Vous voulez réaliser vos projets avec Git ? Découvrez tous ses avantages et son fonctionnement dans notre guide complet, disponible dès maintenant.",[1511],"GitLab Team","what-is-git",1786803798345]