[{"data":1,"prerenderedAt":753},["ShallowReactive",2],{"/fr-fr/blog/categories/open-source":3,"navigation-fr-fr":21,"banner-fr-fr":427,"footer-fr-fr":437,"open-source-category-page-total-items-fr-fr":647,"open-source-category-page-featured-fr-fr":648,"open-source-category-page-1-fr-fr":675},{"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",{"data":22},{"logo":23,"freeTrial":28,"sales":33,"login":38,"items":43,"search":353,"minimal":388,"duo":407,"pricingDeployment":417},{"config":24},{"href":25,"dataGaName":26,"dataGaLocation":27},"/fr-fr/","gitlab logo","header",{"text":29,"config":30},"Commencer un essai gratuit",{"href":31,"dataGaName":32,"dataGaLocation":27},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":34,"config":35},"Contacter l'équipe commerciale",{"href":36,"dataGaName":37,"dataGaLocation":27},"/fr-fr/sales/","sales",{"text":39,"config":40},"Connexion",{"href":41,"dataGaName":42,"dataGaLocation":27},"https://gitlab.com/users/sign_in/","sign in",[44,71,168,173,274,334],{"text":45,"config":46,"cards":48},"Plateforme",{"dataNavLevelOne":47},"platform",[49,55,63],{"title":45,"description":50,"link":51},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":52,"config":53},"Découvrir notre plateforme",{"href":54,"dataGaName":47,"dataGaLocation":27},"/fr-fr/platform/",{"title":56,"description":57,"link":58},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":59,"config":60},"Découvrir GitLab Duo",{"href":61,"dataGaName":62,"dataGaLocation":27},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":64,"description":65,"link":66},"Choisir GitLab","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":67,"config":68},"En savoir plus",{"href":69,"dataGaName":70,"dataGaLocation":27},"/fr-fr/why-gitlab/","why gitlab",{"text":72,"left":15,"config":73,"link":75,"lists":79,"footer":150},"Produit",{"dataNavLevelOne":74},"solutions",{"text":76,"config":77},"Voir toutes les solutions",{"href":78,"dataGaName":74,"dataGaLocation":27},"/fr-fr/solutions/",[80,105,128],{"title":81,"description":82,"link":83,"items":88},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":84},{"icon":85,"href":86,"dataGaName":87,"dataGaLocation":27},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[89,93,96,101],{"text":90,"config":91},"CI/CD",{"href":92,"dataGaLocation":27,"dataGaName":90},"/fr-fr/solutions/continuous-integration/",{"text":56,"config":94},{"href":61,"dataGaLocation":27,"dataGaName":95},"gitlab duo agent platform - product menu",{"text":97,"config":98},"Gestion du code source",{"href":99,"dataGaLocation":27,"dataGaName":100},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":102,"config":103},"Livraison de logiciels automatisée",{"href":86,"dataGaLocation":27,"dataGaName":104},"Automated software delivery",{"title":106,"description":107,"link":108,"items":113},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":109},{"href":110,"dataGaName":111,"dataGaLocation":27,"icon":112},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[114,118,123],{"text":115,"config":116},"Tests de sécurité des applications",{"href":110,"dataGaName":117,"dataGaLocation":27},"Application security testing",{"text":119,"config":120},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":121,"dataGaLocation":27,"dataGaName":122},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":124,"config":125},"Conformité logicielle",{"href":126,"dataGaName":127,"dataGaLocation":27},"/fr-fr/solutions/software-compliance/","Software Compliance",{"title":129,"link":130,"items":135},"Mesures",{"config":131},{"icon":132,"href":133,"dataGaName":134,"dataGaLocation":27},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[136,140,145],{"text":137,"config":138},"Visibilité et mesures",{"href":133,"dataGaLocation":27,"dataGaName":139},"Visibility and Measurement",{"text":141,"config":142},"Gestion de la chaîne de valeur",{"href":143,"dataGaLocation":27,"dataGaName":144},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":146,"config":147},"Données d'analyse et informations clés",{"href":148,"dataGaLocation":27,"dataGaName":149},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":151,"items":152},"GitLab pour",[153,158,163],{"text":154,"config":155},"Entreprises",{"href":156,"dataGaLocation":27,"dataGaName":157},"/fr-fr/enterprise/","enterprise",{"text":159,"config":160},"PME",{"href":161,"dataGaLocation":27,"dataGaName":162},"/fr-fr/small-business/","small business",{"text":164,"config":165},"Secteur public",{"href":166,"dataGaLocation":27,"dataGaName":167},"/fr-fr/solutions/public-sector/","public sector",{"text":169,"config":170},"Tarifs",{"href":171,"dataGaName":172,"dataGaLocation":27,"dataNavLevelOne":172},"/fr-fr/pricing/","pricing",{"text":174,"config":175,"link":177,"lists":181,"feature":261},"Ressources",{"dataNavLevelOne":176},"resources",{"text":178,"config":179},"Afficher toutes les ressources",{"href":180,"dataGaName":176,"dataGaLocation":27},"/fr-fr/resources/",[182,215,233],{"title":183,"items":184},"Premiers pas",[185,190,195,200,205,210],{"text":186,"config":187},"Installation",{"href":188,"dataGaName":189,"dataGaLocation":27},"/fr-fr/install/","install",{"text":191,"config":192},"Guides de démarrage",{"href":193,"dataGaName":194,"dataGaLocation":27},"/fr-fr/get-started/","quick setup checklists",{"text":196,"config":197},"Apprentissage",{"href":198,"dataGaLocation":27,"dataGaName":199},"https://university.gitlab.com/","learn",{"text":201,"config":202},"Documentation sur le produit",{"href":203,"dataGaName":204,"dataGaLocation":27},"https://docs.gitlab.com/","product documentation",{"text":206,"config":207},"Vidéos sur les bonnes pratiques",{"href":208,"dataGaName":209,"dataGaLocation":27},"/fr-fr/getting-started-videos/","best practice videos",{"text":211,"config":212},"Intégrations",{"href":213,"dataGaName":214,"dataGaLocation":27},"/fr-fr/integrations/","integrations",{"title":216,"items":217},"Découvrir",[218,223,228],{"text":219,"config":220},"Témoignages clients",{"href":221,"dataGaName":222,"dataGaLocation":27},"/fr-fr/customers/","customer success stories",{"text":224,"config":225},"Blog",{"href":226,"dataGaName":227,"dataGaLocation":27},"/fr-fr/blog/","blog",{"text":229,"config":230},"Travail à distance",{"href":231,"dataGaName":232,"dataGaLocation":27},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":234,"items":235},"Connecter",[236,241,246,251,256],{"text":237,"config":238},"Services GitLab",{"href":239,"dataGaName":240,"dataGaLocation":27},"/fr-fr/services/","services",{"text":242,"config":243},"Communauté",{"href":244,"dataGaName":245,"dataGaLocation":27},"/community/","community",{"text":247,"config":248},"Forum",{"href":249,"dataGaName":250,"dataGaLocation":27},"https://forum.gitlab.com/","forum",{"text":252,"config":253},"Événements",{"href":254,"dataGaName":255,"dataGaLocation":27},"/events/","events",{"text":257,"config":258},"Partenaires",{"href":259,"dataGaName":260,"dataGaLocation":27},"/fr-fr/partners/","partners",{"backgroundColor":262,"textColor":263,"text":264,"image":265,"link":269},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":266,"config":267},"carte promo The Source",{"src":268},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":270,"config":271},"Lire les articles les plus récents",{"href":272,"dataGaName":273,"dataGaLocation":27},"/fr-fr/the-source/","the source",{"text":275,"config":276,"lists":278},"Société",{"dataNavLevelOne":277},"company",[279],{"items":280},[281,286,292,294,299,304,309,314,319,324,329],{"text":282,"config":283},"À propos",{"href":284,"dataGaName":285,"dataGaLocation":27},"/fr-fr/company/","about",{"text":287,"config":288,"footerGa":291},"Carrières",{"href":289,"dataGaName":290,"dataGaLocation":27},"/jobs/","jobs",{"dataGaName":290},{"text":252,"config":293},{"href":254,"dataGaName":255,"dataGaLocation":27},{"text":295,"config":296},"Leadership",{"href":297,"dataGaName":298,"dataGaLocation":27},"/company/team/e-group/","leadership",{"text":300,"config":301},"Équipe",{"href":302,"dataGaName":303,"dataGaLocation":27},"/company/team/","team",{"text":305,"config":306},"Manuel",{"href":307,"dataGaName":308,"dataGaLocation":27},"https://handbook.gitlab.com/","handbook",{"text":310,"config":311},"Relations avec les investisseurs",{"href":312,"dataGaName":313,"dataGaLocation":27},"https://ir.gitlab.com/","investor relations",{"text":315,"config":316},"Centre de confiance",{"href":317,"dataGaName":318,"dataGaLocation":27},"/fr-fr/security/","trust center",{"text":320,"config":321},"Centre pour la transparence de l'IA",{"href":322,"dataGaName":323,"dataGaLocation":27},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":325,"config":326},"Newsletter",{"href":327,"dataGaName":328,"dataGaLocation":27},"/company/contact/#contact-forms","newsletter",{"text":330,"config":331},"Presse",{"href":332,"dataGaName":333,"dataGaLocation":27},"/press/","press",{"text":335,"config":336,"lists":337},"Nous contacter",{"dataNavLevelOne":277},[338],{"items":339},[340,343,348],{"text":34,"config":341},{"href":36,"dataGaName":342,"dataGaLocation":27},"talk to sales",{"text":344,"config":345},"Portail d’assistance",{"href":346,"dataGaName":347,"dataGaLocation":27},"https://support.gitlab.com","support portal",{"text":349,"config":350},"Portail clients GitLab",{"href":351,"dataGaName":352,"dataGaLocation":27},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":354,"login":355,"suggestions":362},"Fermer",{"text":356,"link":357},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":358,"config":359},"gitlab.com",{"href":41,"dataGaName":360,"dataGaLocation":361},"search login","search",{"text":363,"default":364},"Suggestions",[365,367,372,374,379,384],{"text":56,"config":366},{"href":61,"dataGaName":56,"dataGaLocation":361},{"text":368,"config":369},"Suggestions de code (IA)",{"href":370,"dataGaName":371,"dataGaLocation":361},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":90,"config":373},{"href":92,"dataGaName":90,"dataGaLocation":361},{"text":375,"config":376},"GitLab sur AWS",{"href":377,"dataGaName":378,"dataGaLocation":361},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":380,"config":381},"GitLab sur Google Cloud ",{"href":382,"dataGaName":383,"dataGaLocation":361},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":385,"config":386},"Pourquoi utiliser GitLab ?",{"href":69,"dataGaName":387,"dataGaLocation":361},"Why GitLab?",{"freeTrial":389,"mobileIcon":394,"desktopIcon":399,"secondaryButton":402},{"text":390,"config":391},"Commencer votre essai gratuit",{"href":392,"dataGaName":32,"dataGaLocation":393},"https://gitlab.com/-/trials/new/","nav",{"altText":395,"config":396},"Icône GitLab",{"src":397,"dataGaName":398,"dataGaLocation":393},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":395,"config":400},{"src":401,"dataGaName":398,"dataGaLocation":393},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":403,"config":404},"Commencer",{"href":405,"dataGaName":406,"dataGaLocation":393},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/compare/gitlab-vs-github/","get started",{"freeTrial":408,"mobileIcon":413,"desktopIcon":415},{"text":409,"config":410},"En savoir plus sur GitLab Duo",{"href":411,"dataGaName":412,"dataGaLocation":393},"/fr-fr/gitlab-duo/","gitlab duo",{"altText":395,"config":414},{"src":397,"dataGaName":398,"dataGaLocation":393},{"altText":395,"config":416},{"src":401,"dataGaName":398,"dataGaLocation":393},{"freeTrial":418,"mobileIcon":423,"desktopIcon":425},{"text":419,"config":420},"Retour aux tarifs",{"href":171,"dataGaName":421,"dataGaLocation":393,"icon":422},"back to pricing","GoBack",{"altText":395,"config":424},{"src":397,"dataGaName":398,"dataGaLocation":393},{"altText":395,"config":426},{"src":401,"dataGaName":398,"dataGaLocation":393},{"title":428,"button":429,"config":434},"Découvrez comment l'IA agentique transforme la livraison logicielle",{"text":430,"config":431},"Regarder GitLab Transcend maintenant",{"href":432,"dataGaName":433,"dataGaLocation":27},"/fr-fr/events/transcend/virtual/","transcend event",{"layout":435,"icon":436},"release","AiStar",{"data":438},{"text":439,"source":440,"edit":446,"contribute":451,"config":456,"items":461,"minimal":638},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":441,"config":442},"Afficher le code source de la page",{"href":443,"dataGaName":444,"dataGaLocation":445},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":447,"config":448},"Modifier cette page",{"href":449,"dataGaName":450,"dataGaLocation":445},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":452,"config":453},"Veuillez contribuer",{"href":454,"dataGaName":455,"dataGaLocation":445},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":457,"facebook":458,"youtube":459,"linkedin":460},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[462,485,539,571,606],{"title":45,"links":463,"subMenu":468},[464],{"text":465,"config":466},"Plateforme DevSecOps",{"href":54,"dataGaName":467,"dataGaLocation":445},"devsecops platform",[469],{"title":169,"links":470},[471,475,480],{"text":472,"config":473},"Voir les forfaits",{"href":171,"dataGaName":474,"dataGaLocation":445},"view plans",{"text":476,"config":477},"Pourquoi choisir GitLab Premium ?",{"href":478,"dataGaName":479,"dataGaLocation":445},"/fr-fr/pricing/premium/","why premium",{"text":481,"config":482},"Pourquoi choisir GitLab Ultimate ?",{"href":483,"dataGaName":484,"dataGaLocation":445},"/fr-fr/pricing/ultimate/","why ultimate",{"title":486,"links":487},"Solutions",[488,493,496,498,503,508,512,515,518,523,525,527,529,534],{"text":489,"config":490},"Transformation digitale",{"href":491,"dataGaName":492,"dataGaLocation":445},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":494,"config":495},"Sécurité et conformité",{"href":110,"dataGaName":117,"dataGaLocation":445},{"text":102,"config":497},{"href":86,"dataGaName":87,"dataGaLocation":445},{"text":499,"config":500},"Développement agile",{"href":501,"dataGaName":502,"dataGaLocation":445},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":504,"config":505},"Transformation cloud",{"href":506,"dataGaName":507,"dataGaLocation":445},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":509,"config":510},"SCM",{"href":99,"dataGaName":511,"dataGaLocation":445},"source code management",{"text":90,"config":513},{"href":92,"dataGaName":514,"dataGaLocation":445},"continuous integration & delivery",{"text":141,"config":516},{"href":143,"dataGaName":517,"dataGaLocation":445},"value stream management",{"text":519,"config":520},"GitOps",{"href":521,"dataGaName":522,"dataGaLocation":445},"/fr-fr/solutions/gitops/","gitops",{"text":154,"config":524},{"href":156,"dataGaName":157,"dataGaLocation":445},{"text":159,"config":526},{"href":161,"dataGaName":162,"dataGaLocation":445},{"text":164,"config":528},{"href":166,"dataGaName":167,"dataGaLocation":445},{"text":530,"config":531},"Formation",{"href":532,"dataGaName":533,"dataGaLocation":445},"/fr-fr/solutions/education/","education",{"text":535,"config":536},"Services financiers",{"href":537,"dataGaName":538,"dataGaLocation":445},"/fr-fr/solutions/finance/","financial services",{"title":174,"links":540},[541,543,546,548,551,553,556,559,561,563,565,567,569],{"text":186,"config":542},{"href":188,"dataGaName":189,"dataGaLocation":445},{"text":544,"config":545},"Guides de démarrage rapide",{"href":193,"dataGaName":194,"dataGaLocation":445},{"text":196,"config":547},{"href":198,"dataGaName":199,"dataGaLocation":445},{"text":201,"config":549},{"href":203,"dataGaName":550,"dataGaLocation":445},"docs",{"text":224,"config":552},{"href":226,"dataGaName":227},{"text":554,"config":555},"Histoires de réussite client",{"href":221,"dataGaLocation":445},{"text":557,"config":558},"Histoires de succès client",{"href":221,"dataGaName":222,"dataGaLocation":445},{"text":229,"config":560},{"href":231,"dataGaName":232,"dataGaLocation":445},{"text":237,"config":562},{"href":239,"dataGaName":240,"dataGaLocation":445},{"text":242,"config":564},{"href":244,"dataGaName":245,"dataGaLocation":445},{"text":247,"config":566},{"href":249,"dataGaName":250,"dataGaLocation":445},{"text":252,"config":568},{"href":254,"dataGaName":255,"dataGaLocation":445},{"text":257,"config":570},{"href":259,"dataGaName":260,"dataGaLocation":445},{"title":275,"links":572},[573,575,578,580,582,584,586,590,595,597,599,601],{"text":282,"config":574},{"href":284,"dataGaName":277,"dataGaLocation":445},{"text":576,"config":577},"Emplois",{"href":289,"dataGaName":290,"dataGaLocation":445},{"text":295,"config":579},{"href":297,"dataGaName":298,"dataGaLocation":445},{"text":300,"config":581},{"href":302,"dataGaName":303,"dataGaLocation":445},{"text":305,"config":583},{"href":307,"dataGaName":308,"dataGaLocation":445},{"text":310,"config":585},{"href":312,"dataGaName":313,"dataGaLocation":445},{"text":587,"config":588},"Sustainability",{"href":589,"dataGaName":587,"dataGaLocation":445},"/sustainability/",{"text":591,"config":592},"Diversité, inclusion et appartenance (DIB)",{"href":593,"dataGaName":594,"dataGaLocation":445},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":315,"config":596},{"href":317,"dataGaName":318,"dataGaLocation":445},{"text":325,"config":598},{"href":327,"dataGaName":328,"dataGaLocation":445},{"text":330,"config":600},{"href":332,"dataGaName":333,"dataGaLocation":445},{"text":602,"config":603},"Déclaration de transparence sur l'esclavage moderne",{"href":604,"dataGaName":605,"dataGaLocation":445},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":335,"links":607},[608,611,616,618,623,628,633],{"text":609,"config":610},"Échanger avec un expert",{"href":36,"dataGaName":37,"dataGaLocation":445},{"text":612,"config":613},"Aide",{"href":614,"dataGaName":615,"dataGaLocation":445},"/support/","get help",{"text":349,"config":617},{"href":351,"dataGaName":352,"dataGaLocation":445},{"text":619,"config":620},"Statut",{"href":621,"dataGaName":622,"dataGaLocation":445},"https://status.gitlab.com/","status",{"text":624,"config":625},"Conditions d'utilisation",{"href":626,"dataGaName":627},"/terms/","terms of use",{"text":629,"config":630},"Déclaration de confidentialité",{"href":631,"dataGaName":632,"dataGaLocation":445},"/fr-fr/privacy/","privacy statement",{"text":634,"config":635},"Préférences en matière de cookies",{"dataGaName":636,"dataGaLocation":445,"id":637,"isOneTrustButton":15},"cookie preferences","ot-sdk-btn",{"items":639},[640,642,645],{"text":624,"config":641},{"href":626,"dataGaName":627,"dataGaLocation":445},{"text":643,"config":644},"Politique de confidentialité",{"href":631,"dataGaName":632,"dataGaLocation":445},{"text":634,"config":646},{"dataGaName":636,"dataGaLocation":445,"id":637,"isOneTrustButton":15},23,{"id":649,"title":650,"authorSlugs":651,"body":6,"categorySlug":9,"config":653,"content":656,"description":6,"extension":13,"isFeatured":10,"meta":667,"navigation":15,"path":668,"publishedDate":661,"seo":669,"stem":672,"tagSlugs":673,"__hash__":674},"blogPosts/fr-fr/blog/whats-new-in-git-2-53-0.yml","Whats New In Git 2 53 0",[652],"justin-tobler",{"featured":10,"template":654,"slug":655},"BlogPost","whats-new-in-git-2-53-0",{"tags":657,"category":9,"body":660,"date":661,"heroImage":662,"authors":663,"description":665,"title":666},[658,659,245],"open source","git","Le projet Git a récemment publié [Git 2.53.0](https://lore.kernel.org/git/xmqq4inz13e3.fsf@gitster.g/T/#u). Passons en revue quelques points marquants de cette version, qui comprend des contributions de l'équipe Git chez GitLab.\n\n\n## Prise en charge du rempaquetage géométrique avec les dépôts distants promisor \n\n\nLes objets qui viennent d'être créés dans un dépôt Git sont souvent stockés sous forme de fichiers libres individuels. Pour garantir de bonnes performances et une utilisation optimale de l'espace disque, ces objets libres sont régulièrement compressés dans ce qu'on appelle des fichiers d'empaquetage (« packfiles »). Le nombre de fichiers d'empaquetage dans un dépôt augmente au fil du temps en raison des tâches effectuées, comme la création de nouveaux commits ou la récupération depuis un dépôt distant. À mesure que le nombre de fichiers d'empaquetage augmente dans un dépôt, Git doit effectuer davantage de travail pour rechercher des objets individuels. Par conséquent, pour préserver les performances optimales du dépôt, les fichiers d'empaquetage sont périodiquement rempaquetés via git-repack(1) afin de consolider les objets dans un nombre réduit de fichiers d'empaquetage. Lors du rempaquetage, deux stratégies existent : « tout-en-un » et « géométrique ».\n\n\nLa stratégie tout-en-un est assez simple et constitue la stratégie par défaut actuelle. Comme son nom l'indique, tous les objets du dépôt sont empaquetés dans un seul fichier. Cette approche est idéale pour le dépôt d'un point de vue des performances, car Git n'a besoin de parcourir qu'un seul fichier d'empaquetage lors de la recherche d'objets. Le principal inconvénient ? Le calcul d'un fichier d'empaquetage unique pour un dépôt peut prendre beaucoup de temps en cas de dépôt volumineux.\n\n\nLa stratégie géométrique permet d'atténuer ce problème en maintenant une progression géométrique des fichiers d'empaquetage en fonction de leur taille, au lieu de toujours rempaqueter dans un seul fichier. Lors du rempaquetage, Git maintient un ensemble de fichiers d'empaquetage classés par taille, où chaque fichier de la séquence doit avoir au moins deux fois la taille du fichier d'empaquetage précédent. Si un fichier d'empaquetage de la séquence enfreint cette propriété, les fichiers d'empaquetage sont combinés selon les besoins jusqu'à ce que la progression soit rétablie. Cette stratégie permet de limiter le nombre de fichiers d'empaquetage dans un dépôt tout en minimisant également la quantité de travail à effectuer pour la plupart des opérations de rempaquetage.\n\n\nToutefois, la stratégie de rempaquetage géométrique n'était pas compatible avec les clones partiels. Ces derniers permettent de cloner uniquement certaines parties d'un dépôt (par exemple en ignorant tous les blobs de plus de 1 mégaoctet). Cette approche peut réduire considérablement la taille d'un dépôt, et Git sait comment récupérer les objets manquants auxquels il doit accéder ultérieurement.\n\n\nRésultat : nous obtenons un dépôt dans lequel il manque certains objets. Tout objet qui pourrait ne pas être entièrement connecté est stocké dans un fichier d'empaquetage « promisor ». Lors du rempaquetage, cette propriété promisor doit être conservée pour les fichiers d'empaquetage contenant un objet promisor, afin qu'il soit possible de déterminer si un objet manquant est attendu et peut être récupéré depuis le dépôt distant promisor. Avec une stratégie de rempaquetage tout-en-un, Git sait gérer correctement les objets promisor et les stocke dans un fichier d'empaquetage promisor distinct. Malheureusement, la stratégie de rempaquetage géométrique ne savait pas comment accorder un traitement spécial aux fichiers d'empaquetage promisor et les fusionnait avec des fichiers d'empaquetage normaux sans tenir compte de la présence d'objets promisor. Heureusement, en raison d'un bogue, la commande git-pack-objects(1) sous-jacente échoue lors de l'utilisation du rempaquetage géométrique dans un dépôt de clone partiel. Les dépôts dans cette configuration ne pouvaient donc de toute façon pas être rempaquetés. Ce n'est pas idéal, mais c'est un résultat préférable à une corruption du dépôt.\n\n\nAvec la sortie de Git 2.53, le rempaquetage géométrique fonctionne désormais avec les dépôts de clones partiels. Lors d'un rempaquetage géométrique, les fichiers d'empaquetage promisor sont gérés séparément afin de préserver le marqueur promisor et sont rempaquetés selon une progression géométrique distincte. Avec ce correctif, la stratégie géométrique suit une progression logique en vue de s'imposer comme la stratégie de rempaquetage par défaut. Pour plus d'informations, consultez le [fil de discussion de la liste de diffusion](https://lore.kernel.org/git/20260105-pks-geometric-repack-with-promisors-v1-0-c4660573437e@pks.im/) correspondant.\n\n\nCe projet a été mené par [Patrick Steinhardt](https://gitlab.com/pks-gitlab).\n\n\n## git-fast-import(1) : préservation des signatures valides uniquement \n\n\nDans notre [article de blog consacré à la version Git 2.52](https://about.gitlab.com/fr-fr/blog/whats-new-in-git-2-52-0/), nous avons abordé les améliorations liées aux signatures apportées à git-fast-import(1) et git-fast-export(1). Consultez cet article pour une explication plus détaillée de ces commandes, de leur utilisation et des modifications apportées concernant les signatures.\n\n\nPour résumer brièvement, git-fast-import(1) fournit un backend qui permet d'importer efficacement des données dans un dépôt et qui est utilisé par des outils tels que [git-filter-repo(1)](https://github.com/newren/git-filter-repo) pour aider à réécrire l'historique d'un dépôt en masse. Dans la version Git 2.52, git-fast-import(1) a appris l'option `--signed-commits=\u003Cmode>`, qui est similaire à la même option dans git-fast-export(1). Avec cette option, il est devenu possible de conserver ou de supprimer de façon inconditionnelle les signatures des commits et des tags.\n\n\nDans les situations où seule une partie de l'historique du dépôt a été réécrite, toute signature pour les commits ou tags réécrits devient invalide. Cela signifie que git-fast-import(1) est limité : la commande peut soit supprimer toutes les signatures, soit les conserver même si elles sont devenues invalides. Mais conserver des signatures invalides n'est pas vraiment utile, c'est pourquoi la réécriture de l'historique avec git-repo-filter(1) entraîne la suppression de toutes les signatures, même si le commit ou tag sous-jacent n'est pas réécrit. Cette approche n'est pas idéale : si le commit ou tag ne change pas, sa signature est toujours valide et il n'y a donc aucune raison réelle de la supprimer. Nous avons en réalité besoin de préserver les signatures pour les objets inchangés, et de supprimer les signatures invalides.\n\n\nAvec la sortie de Git 2.53, l'option `--signed-commits=\u003Cmode>` de git-fast-import(1) a appris un nouveau mode `strip-if-invalid` qui, lorsqu'il est utilisé, supprime seulement les signatures devenues invalides des commits réécrits. Ainsi, avec cette option, il devient possible de préserver certaines signatures de commits lors de l'utilisation de git-fast-import(1). Il s'agit d'une étape critique vers la mise en place des bases qui permettent à des outils comme git-repo-filter(1) de préserver les signatures valides et, plus tard, de signer à nouveau les signatures invalides.\n\n\nCe projet a été mené par [Christian Couder](https://gitlab.com/chriscool).\n\n\n## Plus de données collectées dans git-repo-structure\n\n\nDans la version Git 2.52, la sous-commande « structure » a été introduite dans git-repo(1). L'objectif de cette commande était de collecter des informations sur le dépôt et de remplacer éventuellement nativement des outils tels que [git-sizer(1)](https://github.com/github/git-sizer). Chez GitLab, nous hébergeons des dépôts extrêmement volumineux, et disposer d'informations sur la structure générale d'un dépôt est essentiel pour comprendre ses performances. Dans cette version, la commande collecte désormais également des informations sur la taille totale des objets accessibles dans un dépôt afin d'aider à comprendre la taille globale du dépôt. Dans les données de sortie ci-dessous, vous pouvez voir que la commande collecte désormais à la fois les tailles totales décompressées et sur disque des objets accessibles par type.\n\n```shell\n$ git repo structure\n\n| Repository structure | Value      |\n| -------------------- | ---------- |\n| * References         |            |\n|   * Count            |   1.78 k   |\n|     * Branches       |      5     |\n|     * Tags           |   1.03 k   |\n|     * Remotes        |    749     |\n|     * Others         |      0     |\n|                      |            |\n| * Reachable objects  |            |\n|   * Count            | 421.37 k   |\n|     * Commits        |  88.03 k   |\n|     * Trees          | 169.95 k   |\n|     * Blobs          | 162.40 k   |\n|     * Tags           |    994     |\n|   * Inflated size    |   7.61 GiB |\n|     * Commits        |  60.95 MiB |\n|     * Trees          |   2.44 GiB |\n|     * Blobs          |   5.11 GiB |\n|     * Tags           | 731.73 KiB |\n|   * Disk size        | 301.50 MiB |\n|     * Commits        |  33.57 MiB |\n|     * Trees          |  77.92 MiB |\n|     * Blobs          | 189.44 MiB |\n|     * Tags           | 578.13 KiB |\n```\n\n\nVous aurez peut-être également remarqué que les valeurs de taille dans le tableau des données de sortie sont désormais également affichées de manière plus conviviale avec des unités. Dans les versions suivantes, nous espérons étendre davantage les données de sortie de cette commande pour fournir des éléments supplémentaires, tels que les objets individuels les plus volumineux du dépôt.\n\n\nCe projet a été mené par [Justin Tobler](https://gitlab.com/justintobler).\n\n\n## Pour en savoir plus\n\n\nCet article n'a mis en évidence que quelques-unes des contributions apportées par GitLab et la communauté Git pour cette dernière version. Vous pouvez en apprendre davantage sur ces contributions dans l'[annonce de version officielle](https://lore.kernel.org/git/xmqq4inz13e3.fsf@gitster.g/T/#u) du projet Git. Consultez également nos [articles de blog précédents sur les versions de Git](https://about.gitlab.com/fr-fr/tags/git/) pour découvrir d'autres contributions des membres de l'équipe GitLab.","2026-02-03","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663087/Blog/Hero%20Images/git3-cover.png",[664],"Justin Tobler","Découvrez les contributions à cette version, notamment les correctifs apportés au rempaquetage géométrique, une évolution des options de gestion des signatures de commits dans git-fast-import(1), et bien plus encore.","Nouveautés de Git 2.53.0",{},"/fr-fr/blog/whats-new-in-git-2-53-0",{"config":670,"title":666,"description":671},{"noIndex":10},"Découvrez les nouveautés : correctifs du rempaquetage géométrique, options de signature des commits avec git-fast-import(1), et plus encore.","fr-fr/blog/whats-new-in-git-2-53-0",[9,659,245],"1H08rpSANoOQclVGMWL1s6BNyEhDCYwE5Mxchse8f48",[676,686,695,704,714,722,730,738,746],{"content":677,"config":684},{"title":678,"heroImage":662,"category":9,"description":679,"authors":680},"Nouveautés de Git 2.52.0","Découvrez les contributions à cette version, notamment la nouvelle commande git-last-modified(1), les améliorations des outils de réécriture de l'historique et une nouvelle stratégie de maintenance.",[681,682,683],"Christian Couder","Toon Claes","Patrick Steinhardt",{"externalUrl":-1,"slug":685},"whats-new-in-git-2-52-0",{"content":687,"config":693},{"title":688,"heroImage":689,"category":9,"description":690,"authors":691},"Qu’est-ce que Docker ? Notre guide complet","https://res.cloudinary.com/about-gitlab-com/image/upload/v1760102032/qsxbap3mitapwa5tko76.jpg","Découvrez ce qu’est Docker, comment il fonctionne, ses avantages et ses limites, et son intégration avec GitLab pour une approche DevSecOps complète.",[692],"GitLab France Team",{"externalUrl":-1,"slug":694},"what-is-docker-comprehensive-guide",{"content":696,"config":702},{"title":697,"heroImage":698,"category":9,"description":699,"authors":700},"Nouveautés de Git 2.51.0","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1749663087/Blog/Hero%20Images/git3-cover.png","Découvrez les dernières contributions de l'équipe Git de GitLab et de la communauté Git, notamment les optimisations de performances pour git-push(1) et git-fetch(1).",[701],"Karthik Nayak",{"externalUrl":-1,"slug":703},"what-s-new-in-git-2-51-0",{"content":705,"config":712},{"title":706,"heroImage":707,"category":9,"description":708,"authors":709},"Comment nous utilisons GitLab pour développer les communautés open source","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,w_820,h_500,c_lfill/v1750099558/Blog/Hero%20Images/gitlabflatlogomap.png","Découvrez comment utiliser la plateforme DevSecOps de GitLab pour résoudre les problèmes d'intégration des nouveaux contributeurs.",[710,711],"Lee Tickett","Daniel Murphy",{"externalUrl":-1,"slug":713},"how-we-use-gitlab-to-grow-open-source-communities",{"content":715,"config":720},{"title":716,"heroImage":717,"category":9,"description":718,"authors":719},"Nouveautés de Git 2.50.0","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,w_1640,h_1000,c_lfill/v1749663087/Blog/Hero%20Images/git3-cover.png","Découvrez les contributions de l'équipe Git de GitLab et de la communauté Git, dont git-diff-pairs(1) et git-rev-list(1), pour la mise à jour de références par lot.",[664],{"externalUrl":-1,"slug":721},"what-s-new-in-git-2-50-0",{"content":723,"config":728},{"title":724,"heroImage":725,"category":9,"description":726,"authors":727},"Open source : définition, avantages et défis","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662973/Blog/Hero%20Images/open-source-definition.jpg","Qu'est-ce que l'open source ? Apprenez comment ce modèle collaboratif transforme le développement logiciel grâce au libre accès et au partage du code.",[692],{"externalUrl":-1,"slug":729},"what-is-open-source",{"content":731,"config":736},{"title":732,"heroImage":733,"category":9,"description":734,"authors":735},"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).",[683],{"externalUrl":-1,"slug":737},"journey-through-gits-20-year-history",{"content":739,"config":744},{"title":740,"heroImage":741,"category":9,"description":742,"authors":743},"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.",[683],{"externalUrl":-1,"slug":745},"celebrating-gits-20th-anniversary-with-creator-linus-torvalds",{"content":747,"config":751},{"title":748,"heroImage":662,"category":9,"description":749,"authors":750},"Nouveautés de Git 2.49.0","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).",[682],{"externalUrl":-1,"slug":752},"whats-new-in-git-2-49-0",1772652099399]